home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1999-01-14 | 38.8 KB | [TEXT/MSET] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MSET] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 05 63 67 2d 4f 44 00 | 00 00 00 00 00 00 00 00 |..cg-OD.|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 53 45 | 54 01 00 00 00 00 00 00 |.TEXTMSE|T.......|
|00000050| 00 00 00 00 00 98 f9 00 | 00 01 7d b2 c3 c9 3b b2 |........|..}...;.|
|00000060| c3 c9 3b 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..;.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 7f 1b 00 00 |........|........|
|00000080| 6d 61 72 6b 65 72 20 6d | 5f 5f 63 67 2d 4f 44 0d |marker m|__cg-OD.|
|00000090| 0d 50 50 43 3f 0d 5b 49 | 46 5d 0d 66 61 6c 73 65 |.PPC?.[I|F].false|
|000000a0| 09 63 6f 6e 73 74 61 6e | 74 09 64 65 62 75 67 3f |.constan|t.debug?|
|000000b0| 0d 66 61 6c 73 65 09 63 | 6f 6e 73 74 61 6e 74 09 |.false.c|onstant.|
|000000c0| 68 6f 69 73 74 54 65 73 | 74 3f 0d 5b 45 4c 53 45 |hoistTes|t?.[ELSE|
|000000d0| 5d 0d 66 61 6c 73 65 09 | 63 6f 6e 73 74 61 6e 74 |].false.|constant|
|000000e0| 09 64 65 62 75 67 3f 0d | 66 61 6c 73 65 09 63 6f |.debug?.|false.co|
|000000f0| 6e 73 74 61 6e 74 09 68 | 6f 69 73 74 54 65 73 74 |nstant.h|oistTest|
|00000100| 3f 0d 5b 54 48 45 4e 5d | 0d 0d 0d 28 2a 09 4f 55 |?.[THEN]|...(*.OU|
|00000110| 54 5f 4f 46 5f 45 51 5f | 52 41 4e 47 45 20 75 70 |T_OF_EQ_|RANGE up|
|00000120| 64 61 74 65 73 20 74 68 | 65 20 70 61 73 73 65 64 |dates th|e passed|
|00000130| 2d 69 6e 20 43 44 50 20 | 76 61 6c 75 65 2c 20 73 |-in CDP |value, s|
|00000140| 6f 20 74 68 61 74 20 69 | 74 20 64 6f 65 73 6e 27 |o that i|t doesn'|
|00000150| 74 0d 09 66 61 6c 6c 20 | 69 6e 20 61 6e 79 20 65 |t..fall |in any e|
|00000160| 71 75 61 6c 69 7a 61 74 | 69 6f 6e 20 72 61 6e 67 |qualizat|ion rang|
|00000170| 65 2e 20 20 57 65 20 6d | 75 73 74 20 6e 65 76 65 |e. We m|ust neve|
|00000180| 72 20 68 6f 69 73 74 20 | 61 6e 20 6f 70 20 6f 72 |r hoist |an op or|
|00000190| 20 72 65 63 6f 6d 70 69 | 6c 65 0d 09 61 6e 20 6f | recompi|le..an o|
|000001a0| 70 20 69 6e 20 73 75 63 | 68 20 61 20 72 61 6e 67 |p in suc|h a rang|
|000001b0| 65 2c 20 73 69 6e 63 65 | 20 77 68 61 74 20 77 65 |e, since| what we|
|000001c0| 20 63 6f 6d 70 69 6c 65 | 20 74 68 65 72 65 20 69 | compile| there i|
|000001d0| 73 20 65 78 61 63 74 6c | 79 20 77 68 61 74 0d 09 |s exactl|y what..|
|000001e0| 77 65 20 77 61 6e 74 20 | 61 6e 64 20 6d 75 73 74 |we want |and must|
|000001f0| 6e 27 74 20 62 65 20 6d | 6f 6e 6b 65 79 65 64 20 |n't be m|onkeyed |
|00000200| 61 72 6f 75 6e 64 20 77 | 69 74 68 2e 0d 2a 29 0d |around w|ith..*).|
|00000210| 0d 3a 20 4f 55 54 5f 4f | 46 5f 45 51 5f 52 41 4e |.: OUT_O|F_EQ_RAN|
|00000220| 47 45 20 20 7b 20 74 72 | 79 43 44 50 20 5c 20 43 |GE { tr|yCDP \ C|
|00000230| 44 50 27 20 6c 6f 20 68 | 69 20 2d 2d 20 43 44 50 |DP' lo h|i -- CDP|
|00000240| 27 20 7d 0d 09 72 65 73 | 65 74 3a 20 65 71 5f 72 |' }..res|et: eq_r|
|00000250| 61 6e 67 65 73 20 20 74 | 72 79 43 44 50 20 2d 3e |anges t|ryCDP ->|
|00000260| 20 43 44 50 27 0d 09 42 | 45 47 49 4e 0d 09 09 6c | CDP'..B|EGIN...l|
|00000270| 65 6e 3a 20 65 71 5f 72 | 61 6e 67 65 73 0d 09 09 |en: eq_r|anges...|
|00000280| 4e 49 46 09 09 09 5c 20 | 6e 6f 20 72 61 6e 67 65 |NIF...\ |no range|
|00000290| 20 6c 65 66 74 20 2d 20 | 63 75 72 72 65 6e 74 20 | left - |current |
|000002a0| 76 61 6c 75 65 20 69 73 | 20 4f 4b 0d 09 09 09 64 |value is| OK....d|
|000002b0| 65 62 75 67 3f 20 69 66 | 0d 09 09 09 09 43 44 50 |ebug? if|.....CDP|
|000002c0| 27 20 74 72 79 43 44 50 | 20 3c 3e 0d 09 09 09 09 |' tryCDP| <>.....|
|000002d0| 69 66 20 20 63 72 20 2e | 22 20 6f 75 74 5f 6f 66 |if cr .|" out_of|
|000002e0| 5f 65 71 5f 72 61 6e 67 | 65 20 75 70 64 61 74 65 |_eq_rang|e update|
|000002f0| 73 20 22 20 74 72 79 43 | 44 50 20 2e 68 20 2e 22 |s " tryC|DP .h ."|
|00000300| 20 2d 3e 20 22 20 43 44 | 50 27 20 2e 68 20 63 72 | -> " CD|P' .h cr|
|00000310| 0d 09 09 09 09 74 68 65 | 6e 0d 09 09 09 74 68 65 |.....the|n....the|
|00000320| 6e 0d 09 09 09 43 44 50 | 27 20 20 45 58 49 54 0d |n....CDP|' EXIT.|
|00000330| 09 09 54 48 45 4e 0d 0d | 09 09 6e 78 74 4c 3a 20 |..THEN..|..nxtL: |
|00000340| 65 71 5f 72 61 6e 67 65 | 73 20 20 2d 3e 20 6c 6f |eq_range|s -> lo|
|00000350| 0d 09 09 6c 65 6e 3a 20 | 65 71 5f 72 61 6e 67 65 |...len: |eq_range|
|00000360| 73 20 4e 49 46 20 20 26 | 20 46 46 46 46 46 46 30 |s NIF &| FFFFFF0|
|00000370| 30 20 20 45 4c 53 45 20 | 20 6e 78 74 4c 3a 20 65 |0 ELSE | nxtL: e|
|00000380| 71 5f 72 61 6e 67 65 73 | 20 20 54 48 45 4e 20 20 |q_ranges| THEN |
|00000390| 2d 3e 20 68 69 0d 09 09 | 0d 09 09 43 44 50 27 20 |-> hi...|...CDP' |
|000003a0| 6c 6f 20 68 69 20 75 77 | 69 74 68 69 6e 3f 0d 09 |lo hi uw|ithin?..|
|000003b0| 09 4e 49 46 09 64 72 6f | 70 09 5c 20 6e 6f 74 20 |.NIF.dro|p.\ not |
|000003c0| 69 6e 20 74 68 65 20 72 | 61 6e 67 65 20 2d 20 74 |in the r|ange - t|
|000003d0| 68 69 73 20 76 61 6c 75 | 65 20 69 73 20 4f 4b 0d |his valu|e is OK.|
|000003e0| 09 09 09 64 65 62 75 67 | 3f 20 69 66 0d 09 09 09 |...debug|? if....|
|000003f0| 09 43 44 50 27 20 74 72 | 79 43 44 50 20 3c 3e 0d |.CDP' tr|yCDP <>.|
|00000400| 09 09 09 09 69 66 20 20 | 63 72 20 2e 22 20 6f 75 |....if |cr ." ou|
|00000410| 74 5f 6f 66 5f 65 71 5f | 72 61 6e 67 65 20 75 70 |t_of_eq_|range up|
|00000420| 64 61 74 65 73 20 22 20 | 74 72 79 43 44 50 20 2e |dates " |tryCDP .|
|00000430| 68 20 2e 22 20 2d 3e 20 | 22 20 43 44 50 27 20 2e |h ." -> |" CDP' .|
|00000440| 68 20 63 72 0d 09 09 09 | 09 74 68 65 6e 0d 09 09 |h cr....|.then...|
|00000450| 09 74 68 65 6e 0d 09 09 | 09 43 44 50 27 20 20 45 |.then...|.CDP' E|
|00000460| 58 49 54 0d 09 09 54 48 | 45 4e 0d 09 09 64 72 6f |XIT...TH|EN...dro|
|00000470| 70 20 20 68 69 20 34 2b | 20 20 2d 3e 20 43 44 50 |p hi 4+| -> CDP|
|00000480| 27 09 5c 20 4f 74 68 65 | 72 77 69 73 65 20 74 72 |'.\ Othe|rwise tr|
|00000490| 79 20 61 67 61 69 6e 20 | 77 69 74 68 20 6e 65 78 |y again |with nex|
|000004a0| 74 20 69 6e 73 74 72 75 | 63 74 69 6f 6e 0d 09 41 |t instru|ction..A|
|000004b0| 47 41 49 4e 09 09 09 09 | 09 09 5c 20 20 61 66 74 |GAIN....|..\ aft|
|000004c0| 65 72 20 74 68 65 20 72 | 61 6e 67 65 0d 3b 0d 0d |er the r|ange.;..|
|000004d0| 0d 5c 09 09 09 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |.\...===|========|
|000004e0| 3d 3d 3d 3d 3d 3d 09 4f | 44 09 3d 3d 3d 3d 3d 3d |======.O|D.======|
|000004f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 0d 0d 28 2a |========|====..(*|
|00000500| 0d 43 6c 61 73 73 20 4f | 44 20 64 65 73 63 72 69 |.Class O|D descri|
|00000510| 62 65 73 20 6f 75 72 20 | 6f 70 65 72 61 74 69 6f |bes our |operatio|
|00000520| 6e 20 64 65 73 63 72 69 | 70 74 6f 72 2e 20 20 49 |n descri|ptor. I|
|00000530| 74 20 61 6c 73 6f 20 64 | 65 73 63 72 69 62 65 73 |t also d|escribes|
|00000540| 20 74 68 65 0d 64 65 73 | 74 69 6e 61 74 69 6f 6e | the.des|tination|
|00000550| 20 6f 70 65 72 61 6e 64 | 20 6f 66 20 74 68 65 20 | operand| of the |
|00000560| 6f 70 65 72 61 74 69 6f | 6e 2e 20 20 49 74 27 73 |operatio|n. It's|
|00000570| 20 76 65 72 79 20 73 69 | 6d 69 6c 61 72 20 74 6f | very si|milar to|
|00000580| 20 77 68 61 74 20 69 74 | 20 69 73 20 69 6e 0d 74 | what it| is in.t|
|00000590| 68 65 20 36 38 6b 20 63 | 6f 64 65 20 67 65 6e 65 |he 68k c|ode gene|
|000005a0| 72 61 74 6f 72 20 28 62 | 75 74 20 6e 6f 74 20 69 |rator (b|ut not i|
|000005b0| 64 65 6e 74 69 63 61 6c | 29 2e 0d 0d 54 68 69 73 |dentical|)...This|
|000005c0| 20 63 6c 61 73 73 20 69 | 73 20 75 73 65 64 20 66 | class i|s used f|
|000005d0| 6f 72 20 74 68 65 20 47 | 50 52 73 2c 20 69 6e 20 |or the G|PRs, in |
|000005e0| 77 68 69 63 68 20 63 61 | 73 65 20 65 61 63 68 20 |which ca|se each |
|000005f0| 69 6e 73 74 61 6e 63 65 | 20 64 65 73 63 72 69 62 |instance| describ|
|00000600| 6c 65 73 0d 74 68 65 20 | 6f 70 65 72 61 6e 64 20 |les.the |operand |
|00000610| 69 6e 20 74 68 65 20 72 | 65 67 20 61 6e 64 20 74 |in the r|eg and t|
|00000620| 68 65 20 6c 61 73 74 20 | 6f 70 65 72 61 74 69 6f |he last |operatio|
|00000630| 6e 20 6f 6e 20 69 74 2e | 20 20 0d 0d 49 74 20 73 |n on it.| ..It s|
|00000640| 65 65 6d 73 20 77 65 20 | 75 73 65 20 74 68 69 73 |eems we |use this|
|00000650| 20 6f 6e 65 20 63 6c 61 | 73 73 20 66 6f 72 20 61 | one cla|ss for a|
|00000660| 20 6e 75 6d 62 65 72 20 | 6f 66 20 74 68 69 6e 67 | number |of thing|
|00000670| 73 2c 20 61 6e 64 20 77 | 65 20 64 6f 2c 20 62 75 |s, and w|e do, bu|
|00000680| 74 0d 74 68 65 20 64 69 | 66 66 65 72 65 6e 74 20 |t.the di|fferent |
|00000690| 75 73 65 73 20 64 6f 6e | 27 74 20 72 65 61 6c 6c |uses don|'t reall|
|000006a0| 79 20 61 6c 6c 6f 77 20 | 61 20 6e 65 61 74 20 66 |y allow |a neat f|
|000006b0| 61 63 74 6f 72 69 7a 61 | 74 69 6f 6e 20 69 6e 74 |actoriza|tion int|
|000006c0| 6f 20 73 65 76 65 72 61 | 6c 0d 63 6c 61 73 73 65 |o severa|l.classe|
|000006d0| 73 2e 20 20 49 20 74 72 | 69 65 64 20 69 74 2c 20 |s. I tr|ied it, |
|000006e0| 61 6e 64 20 69 74 27 73 | 20 6e 6f 20 67 6f 6f 64 |and it's| no good|
|000006f0| 2e 20 20 49 6e 20 67 65 | 6e 65 72 61 6c 2c 20 77 |. In ge|neral, w|
|00000700| 68 65 6e 20 77 65 20 6e | 65 65 64 20 61 6e 0d 6f |hen we n|eed an.o|
|00000710| 70 65 72 61 6e 64 20 64 | 65 73 63 72 69 62 65 64 |perand d|escribed|
|00000720| 2c 20 77 65 20 61 6c 73 | 6f 20 6e 65 65 64 20 74 |, we als|o need t|
|00000730| 6f 20 6b 6e 6f 77 20 74 | 68 65 20 6f 70 65 72 61 |o know t|he opera|
|00000740| 74 69 6f 6e 20 77 68 69 | 63 68 20 67 65 6e 65 72 |tion whi|ch gener|
|00000750| 61 74 65 64 0d 69 74 2c | 20 73 6f 20 74 68 61 74 |ated.it,| so that|
|00000760| 20 77 65 20 63 61 6e 20 | 63 68 61 6e 67 65 20 69 | we can |change i|
|00000770| 74 20 69 66 20 6e 65 63 | 65 73 73 61 72 79 20 77 |t if nec|essary w|
|00000780| 68 69 6c 65 20 6f 70 74 | 69 6d 69 7a 69 6e 67 2e |hile opt|imizing.|
|00000790| 0d 0d 57 65 20 70 75 74 | 20 73 6f 6d 65 20 6d 65 |..We put| some me|
|000007a0| 74 68 6f 64 73 20 68 65 | 72 65 20 74 6f 20 64 6f |thods he|re to do|
|000007b0| 20 63 6f 6d 70 69 6c 61 | 74 69 6f 6e 2c 20 62 75 | compila|tion, bu|
|000007c0| 74 20 69 74 27 73 20 6f | 6e 6c 79 20 74 68 65 20 |t it's o|nly the |
|000007d0| 6c 6f 77 2d 6c 65 76 65 | 6c 0d 73 74 75 66 66 2c |low-leve|l.stuff,|
|000007e0| 20 73 69 6e 63 65 20 61 | 74 20 61 20 68 69 67 68 | since a|t a high|
|000007f0| 65 72 20 6c 65 76 65 6c | 20 77 65 20 6d 69 67 68 |er level| we migh|
|00000800| 74 20 62 65 20 63 68 61 | 6e 67 69 6e 67 20 74 68 |t be cha|nging th|
|00000810| 65 20 72 65 67 69 73 74 | 65 72 2c 0d 64 65 6c 65 |e regist|er,.dele|
|00000820| 74 69 6e 67 20 61 20 70 | 72 65 76 69 6f 75 73 20 |ting a p|revious |
|00000830| 6f 70 65 72 61 74 69 6f | 6e 2c 20 6f 72 20 61 6e |operatio|n, or an|
|00000840| 79 74 68 69 6e 67 2e 0d | 2a 29 0d 0d 66 61 6c 73 |ything..|*)..fals|
|00000850| 65 09 76 61 6c 75 65 09 | 72 65 63 6f 6d 70 69 6c |e.value.|recompil|
|00000860| 69 6e 67 3f 0d 0d 0d 3a | 63 6c 61 73 73 20 4f 44 |ing?...:|class OD|
|00000870| 20 20 73 75 70 65 72 7b | 20 6f 62 6a 65 63 74 20 | super{| object |
|00000880| 7d 0d 70 75 62 6c 69 63 | 0d 72 65 63 6f 72 64 0d |}.public|.record.|
|00000890| 7b 09 75 69 6e 74 09 09 | 6f 70 54 79 70 65 0d 09 |{.uint..|opType..|
|000008a0| 75 62 79 74 65 09 09 73 | 75 62 54 79 70 65 0d 09 |ubyte..s|ubType..|
|000008b0| 75 62 79 74 65 09 09 69 | 6e 73 74 72 6e 54 79 70 |ubyte..i|nstrnTyp|
|000008c0| 65 09 09 5c 20 61 72 69 | 74 68 54 79 70 65 20 65 |e..\ ari|thType e|
|000008d0| 74 63 2e 20 2d 20 72 65 | 66 65 72 73 20 74 6f 20 |tc. - re|fers to |
|000008e0| 69 6e 73 74 72 6e 20 63 | 6f 6d 70 69 6c 65 64 0d |instrn c|ompiled.|
|000008f0| 09 75 62 79 74 65 09 09 | 6c 65 6e 0d 09 75 62 79 |.ubyte..|len..uby|
|00000900| 74 65 09 09 6c 65 6e 67 | 74 68 09 09 09 5c 20 23 |te..leng|th...\ #|
|00000910| 20 62 79 74 65 73 20 69 | 6e 20 69 6e 73 74 72 6e | bytes i|n instrn|
|00000920| 20 73 65 71 75 65 6e 63 | 65 20 2d 20 6e 6f 72 6d | sequenc|e - norm|
|00000930| 61 6c 6c 79 20 34 0d 09 | 62 6f 6f 6c 09 09 73 65 |ally 4..|bool..se|
|00000940| 74 43 52 3f 0d 09 62 6f | 6f 6c 09 09 73 70 65 63 |tCR?..bo|ol..spec|
|00000950| 69 61 6c 3f 09 09 5c 20 | 74 72 75 65 20 69 66 20 |ial?..\ |true if |
|00000960| 74 68 69 73 20 49 20 6f | 72 20 61 20 6c 6f 63 61 |this I o|r a loca|
|00000970| 6c 20 76 61 72 69 61 62 | 6c 65 20 65 74 63 2e 0d |l variab|le etc..|
|00000980| 09 62 6f 6f 6c 09 09 70 | 65 72 6d 61 6e 65 6e 74 |.bool..p|ermanent|
|00000990| 3f 09 09 5c 20 74 72 75 | 65 20 69 66 20 77 65 20 |?..\ tru|e if we |
|000009a0| 6b 6e 6f 77 20 74 68 69 | 73 20 72 65 67 20 77 6f |know thi|s reg wo|
|000009b0| 6e 27 74 20 63 68 61 6e | 67 65 20 69 6e 0d 09 09 |n't chan|ge in...|
|000009c0| 09 09 09 09 09 09 5c 20 | 20 74 68 65 20 63 75 72 |......\ | the cur|
|000009d0| 72 65 6e 74 20 64 65 66 | 69 6e 69 74 69 6f 6e 2e |rent def|inition.|
|000009e0| 0d 09 62 6f 6f 6c 09 09 | 64 6f 6e 74 48 6f 69 73 |..bool..|dontHois|
|000009f0| 74 3f 09 09 5c 20 74 72 | 75 65 20 69 66 20 77 65 |t?..\ tr|ue if we|
|00000a00| 27 76 65 20 62 6c 6f 63 | 6b 65 64 20 68 6f 69 73 |'ve bloc|ked hois|
|00000a10| 74 69 6e 67 20 66 6f 72 | 20 74 68 69 73 20 72 65 |ting for| this re|
|00000a20| 67 0d 09 09 09 09 09 09 | 09 09 5c 20 20 66 6f 72 |g.......|..\ for|
|00000a30| 20 77 68 61 74 65 76 65 | 72 20 72 65 61 73 6f 6e | whateve|r reason|
|00000a40| 0d 09 62 6f 6f 6c 09 09 | 63 6f 6d 70 6c 42 3f 09 |..bool..|complB?.|
|00000a50| 09 09 5c 20 61 6e 64 20 | 2d 3e 20 61 6e 64 63 20 |..\ and |-> andc |
|00000a60| 65 74 63 2e 20 20 46 6f | 72 20 6c 6f 67 69 63 61 |etc. Fo|r logica|
|00000a70| 6c 73 20 6f 6e 6c 79 2e | 0d 09 62 6f 6f 6c 09 09 |ls only.|..bool..|
|00000a80| 63 6f 6d 70 6c 52 65 73 | 75 6c 74 3f 09 5c 20 61 |complRes|ult?.\ a|
|00000a90| 6e 64 20 2d 3e 20 6e 61 | 6e 64 20 65 74 63 2e 20 |nd -> na|nd etc. |
|00000aa0| 20 44 69 74 74 6f 2e 0d | 09 75 62 79 74 65 09 09 | Ditto..|.ubyte..|
|00000ab0| 66 6c 61 67 73 0d 09 75 | 62 79 74 65 09 09 76 65 |flags..u|byte..ve|
|00000ac0| 63 4b 69 6e 64 09 09 09 | 5c 20 66 6f 72 20 76 65 |cKind...|\ for ve|
|00000ad0| 63 74 6f 72 73 2c 20 77 | 68 61 74 20 6b 69 6e 64 |ctors, w|hat kind|
|00000ae0| 20 2d 20 62 79 74 65 2c | 20 68 61 6c 66 77 6f 72 | - byte,| halfwor|
|00000af0| 64 20 65 74 63 2e 0d 09 | 75 69 6e 74 09 09 72 65 |d etc...|uint..re|
|00000b00| 66 43 6e 74 0d 09 75 62 | 79 74 65 09 09 6d 61 73 |fCnt..ub|yte..mas|
|00000b10| 6b 42 65 67 69 6e 0d 09 | 75 62 79 74 65 09 09 6d |kBegin..|ubyte..m|
|00000b20| 61 73 6b 45 6e 64 0d 09 | 76 61 72 09 09 09 6f 70 |askEnd..|var...op|
|00000b30| 43 44 50 0d 09 76 61 72 | 09 09 09 6c 61 73 74 52 |CDP..var|...lastR|
|00000b40| 65 66 43 44 50 09 09 5c | 20 43 44 50 20 76 61 6c |efCDP..\| CDP val|
|00000b50| 75 65 20 66 6f 72 20 74 | 68 65 20 6c 61 74 65 73 |ue for t|he lates|
|00000b60| 74 20 6f 70 20 74 68 61 | 74 20 72 65 66 73 20 74 |t op tha|t refs t|
|00000b70| 68 69 73 20 72 65 67 0d | 09 76 61 72 09 09 09 70 |his reg.|.var...p|
|00000b80| 72 65 76 4c 61 73 74 52 | 65 66 43 44 50 09 5c 20 |revLastR|efCDP.\ |
|00000b90| 70 72 65 76 20 76 61 6c | 75 65 20 6f 66 20 74 68 |prev val|ue of th|
|00000ba0| 65 20 61 62 6f 76 65 20 | 2d 20 66 6f 72 20 68 6f |e above |- for ho|
|00000bb0| 69 73 74 69 6e 67 20 63 | 68 65 63 6b 0d 09 76 61 |isting c|heck..va|
|00000bc0| 72 09 09 09 76 61 6c 69 | 64 54 69 6c 6c 43 44 50 |r...vali|dTillCDP|
|00000bd0| 09 5c 20 43 44 50 20 61 | 74 20 77 68 69 63 68 20 |.\ CDP a|t which |
|00000be0| 6f 6e 65 20 6f 66 20 6f | 75 72 20 61 6e 74 65 63 |one of o|ur antec|
|00000bf0| 65 64 65 6e 74 73 20 63 | 68 61 6e 67 65 73 0d 7d |edents c|hanges.}|
|00000c00| 0d 0d 09 72 65 66 65 72 | 65 6e 63 65 09 6d 79 52 |...refer|ence.myR|
|00000c10| 65 66 09 09 5c 20 61 20 | 72 65 66 65 72 65 6e 63 |ef..\ a |referenc|
|00000c20| 65 20 74 6f 20 74 68 69 | 73 20 72 65 67 69 73 74 |e to thi|s regist|
|00000c30| 65 72 20 28 75 73 65 66 | 75 6c 20 74 6f 20 68 61 |er (usef|ul to ha|
|00000c40| 76 65 29 0d 09 72 65 66 | 65 72 65 6e 63 65 09 41 |ve)..ref|erence.A|
|00000c50| 5f 6f 70 6e 64 09 09 5c | 20 31 73 74 20 73 6f 75 |_opnd..\| 1st sou|
|00000c60| 72 63 65 20 6f 70 65 72 | 61 6e 64 0d 09 72 65 66 |rce oper|and..ref|
|00000c70| 65 72 65 6e 63 65 09 42 | 5f 6f 70 6e 64 09 09 5c |erence.B|_opnd..\|
|00000c80| 20 32 6e 64 20 28 69 66 | 20 61 6e 79 29 0d 09 72 | 2nd (if| any)..r|
|00000c90| 65 66 65 72 65 6e 63 65 | 09 43 5f 6f 70 6e 64 09 |eference|.C_opnd.|
|00000ca0| 09 5c 20 33 72 64 20 28 | 6f 6e 6c 79 20 66 6f 72 |.\ 3rd (|only for|
|00000cb0| 20 66 6d 61 64 64 20 61 | 6e 64 20 76 61 72 69 61 | fmadd a|nd varia|
|00000cc0| 6e 74 73 29 0d 0d 65 6e | 64 5f 70 75 62 6c 69 63 |nts)..en|d_public|
|00000cd0| 0d 0d 3a 6d 20 73 65 74 | 43 52 3a 09 09 73 65 74 |..:m set|CR:..set|
|00000ce0| 3a 20 73 65 74 43 52 3f | 09 09 3b 6d 0d 3a 6d 20 |: setCR?|..;m.:m |
|00000cf0| 73 70 65 63 69 61 6c 3a | 09 09 73 65 74 3a 20 73 |special:|..set: s|
|00000d00| 70 65 63 69 61 6c 3f 09 | 3b 6d 0d 0d 5c 20 63 61 |pecial?.|;m..\ ca|
|00000d10| 6c 6c 69 6e 67 20 70 65 | 72 6d 61 6e 65 6e 74 3a |lling pe|rmanent:|
|00000d20| 20 6d 65 61 6e 73 20 74 | 68 61 74 20 77 65 20 6b | means t|hat we k|
|00000d30| 6e 6f 77 20 74 68 69 73 | 20 72 65 67 20 77 6f 6e |now this| reg won|
|00000d40| 27 74 20 63 68 61 6e 67 | 65 20 77 69 74 68 69 6e |'t chang|e within|
|00000d50| 0d 5c 20 20 74 68 69 73 | 20 64 65 66 69 6e 69 74 |.\ this| definit|
|00000d60| 69 6f 6e 2e 0d 3a 6d 20 | 70 65 72 6d 61 6e 65 6e |ion..:m |permanen|
|00000d70| 74 3a 09 73 65 74 3a 20 | 73 70 65 63 69 61 6c 3f |t:.set: |special?|
|00000d80| 20 20 73 65 74 3a 20 70 | 65 72 6d 61 6e 65 6e 74 | set: p|ermanent|
|00000d90| 3f 0d 09 09 09 09 31 36 | 20 70 75 74 3a 20 6f 70 |?.....16| put: op|
|00000da0| 43 44 50 09 3b 6d 09 09 | 5c 20 61 20 64 75 6d 6d |CDP.;m..|\ a dumm|
|00000db0| 79 20 76 61 6c 75 65 20 | 64 69 66 66 65 72 65 6e |y value |differen|
|00000dc0| 74 20 66 72 6f 6d 20 7a | 65 72 6f 20 28 77 68 69 |t from z|ero (whi|
|00000dd0| 63 68 20 6d 65 61 6e 73 | 20 65 6d 70 74 79 2f 75 |ch means| empty/u|
|00000de0| 6e 6b 6e 6f 77 6e 29 0d | 0d 3a 6d 20 6d 79 52 65 |nknown).|.:m myRe|
|00000df0| 66 3a 09 09 69 6e 6c 69 | 6e 65 7b 20 61 64 64 72 |f:..inli|ne{ addr|
|00000e00| 3a 20 6d 79 52 65 66 7d | 09 3b 6d 0d 3a 6d 20 6d |: myRef}|.;m.:m m|
|00000e10| 79 52 65 66 54 79 70 65 | 3a 09 72 65 66 54 79 70 |yRefType|:.refTyp|
|00000e20| 65 3a 20 6d 79 52 65 66 | 20 20 09 09 3b 6d 0d 3a |e: myRef| ..;m.:|
|00000e30| 6d 20 41 72 65 66 3a 09 | 09 69 6e 6c 69 6e 65 7b |m Aref:.|.inline{|
|00000e40| 20 61 64 64 72 3a 20 41 | 5f 6f 70 6e 64 7d 09 3b | addr: A|_opnd}.;|
|00000e50| 6d 0d 3a 6d 20 42 72 65 | 66 3a 09 09 69 6e 6c 69 |m.:m Bre|f:..inli|
|00000e60| 6e 65 7b 20 61 64 64 72 | 3a 20 42 5f 6f 70 6e 64 |ne{ addr|: B_opnd|
|00000e70| 7d 09 3b 6d 0d 3a 6d 20 | 41 54 79 70 65 3a 09 09 |}.;m.:m |AType:..|
|00000e80| 72 65 66 54 79 70 65 3a | 20 41 5f 6f 70 6e 64 09 |refType:| A_opnd.|
|00000e90| 3b 6d 0d 3a 6d 20 42 54 | 79 70 65 3a 09 09 72 65 |;m.:m BT|ype:..re|
|00000ea0| 66 54 79 70 65 3a 20 42 | 5f 6f 70 6e 64 09 3b 6d |fType: B|_opnd.;m|
|00000eb0| 0d 3a 6d 20 41 67 70 72 | 3a 09 09 67 70 72 3a 20 |.:m Agpr|:..gpr: |
|00000ec0| 41 5f 6f 70 6e 64 09 09 | 3b 6d 0d 3a 6d 20 42 67 |A_opnd..|;m.:m Bg|
|00000ed0| 70 72 3a 09 09 67 70 72 | 3a 20 42 5f 6f 70 6e 64 |pr:..gpr|: B_opnd|
|00000ee0| 09 09 3b 6d 0d 3a 6d 20 | 41 72 65 67 3a 09 09 72 |..;m.:m |Areg:..r|
|00000ef0| 65 67 3a 20 41 5f 6f 70 | 6e 64 09 09 3b 6d 0d 3a |eg: A_op|nd..;m.:|
|00000f00| 6d 20 42 72 65 67 3a 09 | 09 72 65 67 3a 20 42 5f |m Breg:.|.reg: B_|
|00000f10| 6f 70 6e 64 09 09 3b 6d | 0d 3a 6d 20 41 66 70 72 |opnd..;m|.:m Afpr|
|00000f20| 3a 09 09 66 70 72 3a 20 | 41 5f 6f 70 6e 64 09 09 |:..fpr: |A_opnd..|
|00000f30| 3b 6d 0d 3a 6d 20 42 66 | 70 72 3a 09 09 66 70 72 |;m.:m Bf|pr:..fpr|
|00000f40| 3a 20 42 5f 6f 70 6e 64 | 09 09 3b 6d 0d 3a 6d 20 |: B_opnd|..;m.:m |
|00000f50| 41 63 72 3a 09 09 09 20 | 63 72 3a 20 41 5f 6f 70 |Acr:... |cr: A_op|
|00000f60| 6e 64 09 09 3b 6d 09 09 | 5c 20 64 6f 6e 27 74 20 |nd..;m..|\ don't |
|00000f70| 74 68 69 6e 6b 20 77 65 | 20 6e 65 65 64 20 69 74 |think we| need it|
|00000f80| 20 66 6f 72 20 42 5f 6f | 70 6e 64 0d 3a 6d 20 41 | for B_o|pnd.:m A|
|00000f90| 6c 69 74 3a 09 09 6c 69 | 74 3a 20 41 5f 6f 70 6e |lit:..li|t: A_opn|
|00000fa0| 64 09 09 3b 6d 0d 3a 6d | 20 42 6c 69 74 3a 09 09 |d..;m.:m| Blit:..|
|00000fb0| 6c 69 74 3a 20 42 5f 6f | 70 6e 64 09 09 3b 6d 0d |lit: B_o|pnd..;m.|
|00000fc0| 0d 3a 6d 20 3e 6d 79 52 | 65 66 3a 09 09 2d 3e 3a |.:m >myR|ef:..->:|
|00000fd0| 20 6d 79 52 65 66 20 20 | 09 09 3b 6d 0d 3a 6d 20 | myRef |..;m.:m |
|00000fe0| 3e 41 54 79 70 65 3a 09 | 09 3e 72 65 66 54 79 70 |>AType:.|.>refTyp|
|00000ff0| 65 3a 20 41 5f 6f 70 6e | 64 09 3b 6d 0d 3a 6d 20 |e: A_opn|d.;m.:m |
|00001000| 3e 42 54 79 70 65 3a 09 | 09 3e 72 65 66 54 79 70 |>BType:.|.>refTyp|
|00001010| 65 3a 20 42 5f 6f 70 6e | 64 09 3b 6d 0d 3a 6d 20 |e: B_opn|d.;m.:m |
|00001020| 3e 41 67 70 72 3a 09 09 | 3e 67 70 72 3a 20 41 5f |>Agpr:..|>gpr: A_|
|00001030| 6f 70 6e 64 09 3b 6d 0d | 3a 6d 20 3e 42 67 70 72 |opnd.;m.|:m >Bgpr|
|00001040| 3a 09 09 3e 67 70 72 3a | 20 42 5f 6f 70 6e 64 09 |:..>gpr:| B_opnd.|
|00001050| 3b 6d 0d 3a 6d 20 3e 41 | 66 70 72 3a 09 09 3e 66 |;m.:m >A|fpr:..>f|
|00001060| 70 72 3a 20 41 5f 6f 70 | 6e 64 09 3b 6d 0d 3a 6d |pr: A_op|nd.;m.:m|
|00001070| 20 3e 42 66 70 72 3a 09 | 09 3e 66 70 72 3a 20 42 | >Bfpr:.|.>fpr: B|
|00001080| 5f 6f 70 6e 64 09 3b 6d | 0d 3a 6d 20 3e 43 66 70 |_opnd.;m|.:m >Cfp|
|00001090| 72 3a 09 09 3e 66 70 72 | 3a 20 43 5f 6f 70 6e 64 |r:..>fpr|: C_opnd|
|000010a0| 09 3b 6d 0d 0d 3a 6d 20 | 3e 41 63 72 3a 09 09 3e |.;m..:m |>Acr:..>|
|000010b0| 63 72 3a 20 41 5f 6f 70 | 6e 64 09 09 3b 6d 0d 0d |cr: A_op|nd..;m..|
|000010c0| 3a 6d 20 3e 41 76 72 3a | 09 09 3e 76 72 3a 20 41 |:m >Avr:|..>vr: A|
|000010d0| 5f 6f 70 6e 64 09 09 3b | 6d 0d 3a 6d 20 3e 42 76 |_opnd..;|m.:m >Bv|
|000010e0| 72 3a 09 09 3e 76 72 3a | 20 42 5f 6f 70 6e 64 09 |r:..>vr:| B_opnd.|
|000010f0| 09 3b 6d 0d 3a 6d 20 3e | 43 76 72 3a 09 09 3e 76 |.;m.:m >|Cvr:..>v|
|00001100| 72 3a 20 43 5f 6f 70 6e | 64 09 09 3b 6d 0d 0d 3a |r: C_opn|d..;m..:|
|00001110| 6d 20 3e 41 6c 69 74 3a | 09 09 3e 6c 69 74 3a 20 |m >Alit:|..>lit: |
|00001120| 41 5f 6f 70 6e 64 09 3b | 6d 0d 3a 6d 20 3e 42 6c |A_opnd.;|m.:m >Bl|
|00001130| 69 74 3a 09 09 3e 6c 69 | 74 3a 20 42 5f 6f 70 6e |it:..>li|t: B_opn|
|00001140| 64 09 3b 6d 0d 0d 0d 3a | 6d 20 43 4c 45 41 52 3a |d.;m...:|m CLEAR:|
|00001150| 09 5c 20 6e 6f 72 6d 61 | 6c 6c 79 20 77 65 20 77 |.\ norma|lly we w|
|00001160| 61 6e 74 20 74 6f 20 6c | 65 61 76 65 20 6c 61 73 |ant to l|eave las|
|00001170| 74 52 65 66 43 44 50 20 | 61 6e 64 20 70 72 65 76 |tRefCDP |and prev|
|00001180| 4c 61 73 74 52 65 66 43 | 44 50 0d 09 09 09 5c 20 |LastRefC|DP....\ |
|00001190| 20 61 6c 6f 6e 65 2c 20 | 73 69 6e 63 65 20 65 76 | alone, |since ev|
|000011a0| 65 6e 20 69 66 20 77 65 | 20 64 65 6c 65 74 65 20 |en if we| delete |
|000011b0| 61 20 72 65 67 20 75 73 | 61 67 65 20 77 65 20 6e |a reg us|age we n|
|000011c0| 65 65 64 20 74 6f 0d 09 | 09 09 5c 20 20 72 65 6d |eed to..|..\ rem|
|000011d0| 65 6d 62 65 72 20 77 68 | 65 72 65 20 74 68 65 20 |ember wh|ere the |
|000011e0| 70 72 65 76 69 6f 75 73 | 20 75 73 65 20 77 61 73 |previous| use was|
|000011f0| 2e 0d 0d 09 63 6c 65 61 | 72 3a 20 6f 70 54 79 70 |....clea|r: opTyp|
|00001200| 65 20 20 63 6c 65 61 72 | 3a 20 73 75 62 74 79 70 |e clear|: subtyp|
|00001210| 65 20 20 63 6c 65 61 72 | 3a 20 69 6e 73 74 72 6e |e clear|: instrn|
|00001220| 54 79 70 65 20 20 34 20 | 20 70 75 74 3a 20 6c 65 |Type 4 | put: le|
|00001230| 6e 0d 09 34 20 70 75 74 | 3a 20 6c 65 6e 67 74 68 |n..4 put|: length|
|00001240| 0d 09 6e 6f 52 65 66 20 | 3e 72 65 66 54 79 70 65 |..noRef |>refType|
|00001250| 3a 20 41 5f 6f 70 6e 64 | 20 20 6e 6f 52 65 66 20 |: A_opnd| noRef |
|00001260| 3e 72 65 66 54 79 70 65 | 3a 20 42 5f 6f 70 6e 64 |>refType|: B_opnd|
|00001270| 0d 09 6e 6f 52 65 66 20 | 3e 72 65 66 54 79 70 65 |..noRef |>refType|
|00001280| 3a 20 43 5f 6f 70 6e 64 | 0d 5c 09 63 6c 65 61 72 |: C_opnd|.\.clear|
|00001290| 3a 20 73 70 65 63 69 61 | 6c 3f 20 20 63 6c 65 61 |: specia|l? clea|
|000012a0| 72 3a 20 70 65 72 6d 61 | 6e 65 6e 74 3f 0d 09 63 |r: perma|nent?..c|
|000012b0| 6c 65 61 72 3a 20 64 6f | 6e 74 48 6f 69 73 74 3f |lear: do|ntHoist?|
|000012c0| 20 20 63 6c 65 61 72 3a | 20 63 6f 6d 70 6c 42 3f | clear:| complB?|
|000012d0| 20 20 63 6c 65 61 72 3a | 20 63 6f 6d 70 6c 52 65 | clear:| complRe|
|000012e0| 73 75 6c 74 3f 0d 09 63 | 6c 65 61 72 3a 20 6f 70 |sult?..c|lear: op|
|000012f0| 43 44 50 0d 09 62 69 67 | 23 20 70 75 74 3a 20 76 |CDP..big|# put: v|
|00001300| 61 6c 69 64 54 69 6c 6c | 43 44 50 0d 09 63 6c 65 |alidTill|CDP..cle|
|00001310| 61 72 3a 20 73 65 74 43 | 52 3f 20 20 63 6c 65 61 |ar: setC|R? clea|
|00001320| 72 3a 20 72 65 66 63 6e | 74 20 20 3b 6d 0d 0d 0d |r: refcn|t ;m...|
|00001330| 3a 6d 20 46 55 4c 4c 5f | 43 4c 45 41 52 3a 0d 09 |:m FULL_|CLEAR:..|
|00001340| 63 6c 65 61 72 3a 20 73 | 65 6c 66 0d 09 63 6c 65 |clear: s|elf..cle|
|00001350| 61 72 3a 20 73 70 65 63 | 69 61 6c 3f 20 20 63 6c |ar: spec|ial? cl|
|00001360| 65 61 72 3a 20 70 65 72 | 6d 61 6e 65 6e 74 3f 0d |ear: per|manent?.|
|00001370| 09 63 6c 65 61 72 3a 20 | 6c 61 73 74 52 65 66 43 |.clear: |lastRefC|
|00001380| 44 50 20 20 63 6c 65 61 | 72 3a 20 70 72 65 76 4c |DP clea|r: prevL|
|00001390| 61 73 74 52 65 66 43 44 | 50 20 20 3b 6d 0d 0d 0d |astRefCD|P ;m...|
|000013a0| 3a 6d 20 41 4c 4c 4f 43 | 41 54 45 3a 0d 09 31 20 |:m ALLOC|ATE:..1 |
|000013b0| 2b 3a 20 72 65 66 43 6e | 74 20 20 3b 6d 0d 0d 5c |+: refCn|t ;m..\|
|000013c0| 20 46 52 45 45 3a 20 6d | 6f 76 65 64 20 74 6f 20 | FREE: m|oved to |
|000013d0| 6c 61 74 65 72 2c 20 61 | 66 74 65 72 20 44 45 4c |later, a|fter DEL|
|000013e0| 45 54 45 3a 20 77 68 69 | 63 68 20 69 74 20 63 61 |ETE: whi|ch it ca|
|000013f0| 6c 6c 73 2e 0d 0d 0d 3a | 6d 20 4d 41 52 4b 5f 55 |lls....:|m MARK_U|
|00001400| 53 45 3a 09 5c 20 28 20 | 43 44 50 74 6f 55 73 65 |SE:.\ ( |CDPtoUse|
|00001410| 20 2d 2d 20 29 0d 09 67 | 65 74 3a 20 6c 61 73 74 | -- )..g|et: last|
|00001420| 52 65 66 43 44 50 20 20 | 75 6d 61 78 20 20 70 75 |RefCDP |umax pu|
|00001430| 74 3a 20 6c 61 73 74 52 | 65 66 43 44 50 0d 09 64 |t: lastR|efCDP..d|
|00001440| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 6d 61 |ebug? if|...." ma|
|00001450| 72 6b 65 64 20 75 73 65 | 3a 20 22 20 70 72 69 6e |rked use|: " prin|
|00001460| 74 3a 20 5b 73 65 6c 66 | 5d 20 63 72 0d 09 74 68 |t: [self|] cr..th|
|00001470| 65 6e 0d 3b 6d 0d 0d 0d | 3a 6d 20 63 6f 70 79 57 |en.;m...|:m copyW|
|00001480| 69 74 68 6f 75 74 43 44 | 50 3a 20 7b 20 5e 4f 44 |ithoutCD|P: { ^OD|
|00001490| 20 2d 2d 20 7d 09 5c 20 | 68 65 72 65 20 6f 6e 6c | -- }.\ |here onl|
|000014a0| 79 20 73 6f 6d 65 20 66 | 69 65 6c 64 73 20 6e 65 |y some f|ields ne|
|000014b0| 65 64 20 74 6f 20 62 65 | 20 63 6f 70 69 65 64 2e |ed to be| copied.|
|000014c0| 20 20 57 65 0d 09 09 09 | 09 09 09 09 09 5c 20 20 | We....|.....\ |
|000014d0| 64 6f 6e 27 74 20 63 6f | 70 79 20 74 68 65 20 43 |don't co|py the C|
|000014e0| 44 50 2d 72 65 6c 61 74 | 65 64 20 66 69 65 6c 64 |DP-relat|ed field|
|000014f0| 73 20 6f 72 20 72 65 66 | 43 6e 74 2e 0d 09 5e 4f |s or ref|Cnt...^O|
|00001500| 44 20 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |D get: i|var> opT|
|00001510| 79 70 65 09 69 6e 20 63 | 6c 61 73 73 5f 61 73 3e |ype.in c|lass_as>|
|00001520| 20 4f 44 09 09 70 75 74 | 3a 20 6f 70 54 79 70 65 | OD..put|: opType|
|00001530| 0d 09 5e 4f 44 20 67 65 | 74 3a 20 69 76 61 72 3e |..^OD ge|t: ivar>|
|00001540| 20 73 75 62 54 79 70 65 | 09 69 6e 20 63 6c 61 73 | subType|.in clas|
|00001550| 73 5f 61 73 3e 20 4f 44 | 09 09 70 75 74 3a 20 73 |s_as> OD|..put: s|
|00001560| 75 62 54 79 70 65 0d 09 | 5e 4f 44 20 67 65 74 3a |ubType..|^OD get:|
|00001570| 20 69 76 61 72 3e 20 69 | 6e 73 74 72 6e 54 79 70 | ivar> i|nstrnTyp|
|00001580| 65 20 69 6e 20 63 6c 61 | 73 73 5f 61 73 3e 20 4f |e in cla|ss_as> O|
|00001590| 44 09 70 75 74 3a 20 69 | 6e 73 74 72 6e 54 79 70 |D.put: i|nstrnTyp|
|000015a0| 65 0d 09 5e 4f 44 20 67 | 65 74 3a 20 69 76 61 72 |e..^OD g|et: ivar|
|000015b0| 3e 20 6c 65 6e 09 09 69 | 6e 20 63 6c 61 73 73 5f |> len..i|n class_|
|000015c0| 61 73 3e 20 4f 44 09 09 | 70 75 74 3a 20 6c 65 6e |as> OD..|put: len|
|000015d0| 0d 09 5e 4f 44 20 67 65 | 74 3a 20 69 76 61 72 3e |..^OD ge|t: ivar>|
|000015e0| 20 6c 65 6e 67 74 68 09 | 69 6e 20 63 6c 61 73 73 | length.|in class|
|000015f0| 5f 61 73 3e 20 4f 44 09 | 09 70 75 74 3a 20 6c 65 |_as> OD.|.put: le|
|00001600| 6e 67 74 68 0d 09 5e 4f | 44 20 61 64 64 72 3a 20 |ngth..^O|D addr: |
|00001610| 69 76 61 72 3e 20 41 5f | 6f 70 6e 64 09 69 6e 20 |ivar> A_|opnd.in |
|00001620| 63 6c 61 73 73 5f 61 73 | 3e 20 4f 44 09 09 2d 3e |class_as|> OD..->|
|00001630| 3a 20 41 5f 6f 70 6e 64 | 0d 09 5e 4f 44 20 61 64 |: A_opnd|..^OD ad|
|00001640| 64 72 3a 20 69 76 61 72 | 3e 20 42 5f 6f 70 6e 64 |dr: ivar|> B_opnd|
|00001650| 09 69 6e 20 63 6c 61 73 | 73 5f 61 73 3e 20 4f 44 |.in clas|s_as> OD|
|00001660| 09 09 2d 3e 3a 20 42 5f | 6f 70 6e 64 0d 09 5e 4f |..->: B_|opnd..^O|
|00001670| 44 20 61 64 64 72 3a 20 | 69 76 61 72 3e 20 43 5f |D addr: |ivar> C_|
|00001680| 6f 70 6e 64 09 69 6e 20 | 63 6c 61 73 73 5f 61 73 |opnd.in |class_as|
|00001690| 3e 20 4f 44 09 09 2d 3e | 3a 20 43 5f 6f 70 6e 64 |> OD..->|: C_opnd|
|000016a0| 0d 0d 09 5e 4f 44 20 67 | 65 74 3a 20 69 76 61 72 |...^OD g|et: ivar|
|000016b0| 3e 20 66 6c 61 67 73 09 | 69 6e 20 63 6c 61 73 73 |> flags.|in class|
|000016c0| 5f 61 73 3e 20 4f 44 09 | 09 70 75 74 3a 20 66 6c |_as> OD.|.put: fl|
|000016d0| 61 67 73 0d 0d 09 5e 4f | 44 20 67 65 74 3a 20 69 |ags...^O|D get: i|
|000016e0| 76 61 72 3e 20 6d 61 73 | 6b 42 65 67 69 6e 20 69 |var> mas|kBegin i|
|000016f0| 6e 20 63 6c 61 73 73 5f | 61 73 3e 20 4f 44 09 70 |n class_|as> OD.p|
|00001700| 75 74 3a 20 6d 61 73 6b | 42 65 67 69 6e 0d 09 5e |ut: mask|Begin..^|
|00001710| 4f 44 20 67 65 74 3a 20 | 69 76 61 72 3e 20 6d 61 |OD get: |ivar> ma|
|00001720| 73 6b 45 6e 64 09 69 6e | 20 63 6c 61 73 73 5f 61 |skEnd.in| class_a|
|00001730| 73 3e 20 4f 44 09 09 70 | 75 74 3a 20 6d 61 73 6b |s> OD..p|ut: mask|
|00001740| 45 6e 64 0d 09 0d 09 5e | 4f 44 20 67 65 74 3a 20 |End....^|OD get: |
|00001750| 69 76 61 72 3e 20 73 65 | 74 43 52 3f 09 69 6e 20 |ivar> se|tCR?.in |
|00001760| 63 6c 61 73 73 5f 61 73 | 3e 20 4f 44 09 09 70 75 |class_as|> OD..pu|
|00001770| 74 3a 20 73 65 74 43 52 | 3f 0d 09 5e 4f 44 20 67 |t: setCR|?..^OD g|
|00001780| 65 74 3a 20 69 76 61 72 | 3e 20 63 6f 6d 70 6c 42 |et: ivar|> complB|
|00001790| 3f 09 69 6e 20 63 6c 61 | 73 73 5f 61 73 3e 20 4f |?.in cla|ss_as> O|
|000017a0| 44 09 09 70 75 74 3a 20 | 63 6f 6d 70 6c 42 3f 0d |D..put: |complB?.|
|000017b0| 09 5e 4f 44 20 67 65 74 | 3a 20 69 76 61 72 3e 20 |.^OD get|: ivar> |
|000017c0| 63 6f 6d 70 6c 52 65 73 | 75 6c 74 3f 20 69 6e 20 |complRes|ult? in |
|000017d0| 63 6c 61 73 73 5f 61 73 | 3e 20 4f 44 20 20 70 75 |class_as|> OD pu|
|000017e0| 74 3a 20 63 6f 6d 70 6c | 52 65 73 75 6c 74 3f 0d |t: compl|Result?.|
|000017f0| 0d 3b 6d 0d 0d 3a 6d 20 | 2d 3e 3a 20 7b 20 5e 4f |.;m..:m |->: { ^O|
|00001800| 44 20 2d 2d 20 7d 09 09 | 5c 20 64 65 66 61 75 6c |D -- }..|\ defaul|
|00001810| 74 20 63 6f 70 79 20 2d | 20 73 61 6d 65 20 61 73 |t copy -| same as|
|00001820| 20 63 6f 70 79 57 69 74 | 68 6f 75 74 43 44 50 3a | copyWit|houtCDP:|
|00001830| 2e 0d 09 5e 4f 44 20 63 | 6f 70 79 57 69 74 68 6f |...^OD c|opyWitho|
|00001840| 75 74 43 44 50 3a 20 73 | 65 6c 66 0d 3b 6d 0d 0d |utCDP: s|elf.;m..|
|00001850| 0d 3a 6d 20 63 6f 70 79 | 57 69 74 68 43 44 50 3a |.:m copy|WithCDP:|
|00001860| 20 20 7b 20 5e 4f 44 20 | 2d 2d 20 7d 09 5c 20 63 | { ^OD |-- }.\ c|
|00001870| 6f 70 79 20 69 6e 63 6c | 75 64 69 6e 67 20 74 68 |opy incl|uding th|
|00001880| 65 20 43 44 50 2d 72 65 | 6c 61 74 65 64 20 66 69 |e CDP-re|lated fi|
|00001890| 65 6c 64 73 0d 09 09 09 | 09 09 09 09 5c 20 20 28 |elds....|....\ (|
|000018a0| 62 75 74 20 73 74 69 6c | 6c 20 6e 6f 74 20 72 65 |but stil|l not re|
|000018b0| 66 43 68 74 2c 20 77 68 | 69 63 68 20 4e 45 56 45 |fCht, wh|ich NEVE|
|000018c0| 52 20 67 65 74 73 20 63 | 6f 70 69 65 64 21 29 0d |R gets c|opied!).|
|000018d0| 09 5e 4f 44 20 63 6f 70 | 79 57 69 74 68 6f 75 74 |.^OD cop|yWithout|
|000018e0| 43 44 50 3a 20 73 65 6c | 66 0d 09 5e 4f 44 20 67 |CDP: sel|f..^OD g|
|000018f0| 65 74 3a 20 69 76 61 72 | 3e 20 6f 70 43 44 50 09 |et: ivar|> opCDP.|
|00001900| 09 09 69 6e 20 63 6c 61 | 73 73 5f 61 73 3e 20 4f |..in cla|ss_as> O|
|00001910| 44 20 20 70 75 74 3a 20 | 6f 70 43 44 50 0d 09 5e |D put: |opCDP..^|
|00001920| 4f 44 20 67 65 74 3a 20 | 69 76 61 72 3e 20 6c 61 |OD get: |ivar> la|
|00001930| 73 74 52 65 66 43 44 50 | 09 09 69 6e 20 63 6c 61 |stRefCDP|..in cla|
|00001940| 73 73 5f 61 73 3e 20 4f | 44 20 20 70 75 74 3a 20 |ss_as> O|D put: |
|00001950| 6c 61 73 74 52 65 66 43 | 44 50 0d 09 5e 4f 44 20 |lastRefC|DP..^OD |
|00001960| 67 65 74 3a 20 69 76 61 | 72 3e 20 70 72 65 76 4c |get: iva|r> prevL|
|00001970| 61 73 74 52 65 66 43 44 | 50 09 69 6e 20 63 6c 61 |astRefCD|P.in cla|
|00001980| 73 73 5f 61 73 3e 20 4f | 44 20 20 70 75 74 3a 20 |ss_as> O|D put: |
|00001990| 70 72 65 76 4c 61 73 74 | 52 65 66 43 44 50 0d 09 |prevLast|RefCDP..|
|000019a0| 5e 4f 44 20 67 65 74 3a | 20 69 76 61 72 3e 20 76 |^OD get:| ivar> v|
|000019b0| 61 6c 69 64 54 69 6c 6c | 43 44 50 09 09 69 6e 20 |alidTill|CDP..in |
|000019c0| 63 6c 61 73 73 5f 61 73 | 3e 20 4f 44 20 20 70 75 |class_as|> OD pu|
|000019d0| 74 3a 20 76 61 6c 69 64 | 54 69 6c 6c 43 44 50 0d |t: valid|TillCDP.|
|000019e0| 3b 6d 0d 0d 0d 3a 6d 20 | 63 6f 70 79 4f 44 3a 09 |;m...:m |copyOD:.|
|000019f0| 5c 20 28 20 5e 4f 44 20 | 2d 2d 20 29 20 20 43 6f |\ ( ^OD |-- ) Co|
|00001a00| 70 69 65 73 20 74 68 65 | 20 65 6e 74 69 72 65 20 |pies the| entire |
|00001a10| 4f 44 2e 0d 09 5e 62 61 | 73 65 20 20 5b 27 5d 20 |OD...^ba|se ['] |
|00001a20| 4f 44 20 69 76 61 72 6c | 65 6e 20 20 61 6c 69 67 |OD ivarl|en alig|
|00001a30| 6e 65 64 5f 6d 6f 76 65 | 20 20 3b 6d 0d 0d 0d 3a |ned_move| ;m...:|
|00001a40| 6d 20 3d 3f 3a 20 20 7b | 20 5e 4f 44 20 2d 2d 20 |m =?: {| ^OD -- |
|00001a50| 62 20 7d 09 5c 20 77 65 | 20 63 61 6e 27 74 20 6a |b }.\ we| can't j|
|00001a60| 75 73 74 20 64 6f 20 61 | 20 73 69 6d 70 6c 65 20 |ust do a| simple |
|00001a70| 63 6f 6d 70 61 72 69 73 | 6f 6e 20 68 65 72 65 21 |comparis|on here!|
|00001a80| 0d 0d 09 66 61 6c 73 65 | 0d 0d 5c 20 46 69 72 73 |...false|..\ Firs|
|00001a90| 74 2c 20 69 66 20 6f 70 | 54 79 70 65 20 69 73 20 |t, if op|Type is |
|00001aa0| 65 6d 70 74 79 20 6f 72 | 20 75 6e 6b 6e 6f 77 6e |empty or| unknown|
|00001ab0| 2c 20 63 61 6e 27 74 20 | 6d 61 74 63 68 20 6e 6f |, can't |match no|
|00001ac0| 20 6d 61 74 74 65 72 20 | 77 68 61 74 2e 0d 5c 20 | matter |what..\ |
|00001ad0| 20 4e 6f 74 65 20 77 65 | 20 64 6f 6e 27 74 20 63 | Note we| don't c|
|00001ae0| 6f 6d 70 61 72 65 20 74 | 68 65 20 73 75 62 74 79 |ompare t|he subty|
|00001af0| 70 65 20 73 69 6e 63 65 | 20 63 75 72 72 65 6e 74 |pe since| current|
|00001b00| 6c 79 20 74 68 61 74 27 | 73 20 6f 6e 6c 79 20 75 |ly that'|s only u|
|00001b10| 73 65 64 0d 5c 20 20 66 | 6f 72 20 63 6f 6d 70 61 |sed.\ f|or compa|
|00001b20| 72 69 73 6f 6e 73 2c 20 | 66 6f 72 20 77 68 69 63 |risons, |for whic|
|00001b30| 68 20 69 74 27 73 20 69 | 72 72 65 6c 65 76 61 6e |h it's i|rrelevan|
|00001b40| 74 20 66 6f 72 20 6d 61 | 74 63 68 69 6e 67 20 70 |t for ma|tching p|
|00001b50| 75 72 70 6f 73 65 73 2e | 20 0d 0d 09 67 65 74 3a |urposes.| ...get:|
|00001b60| 20 6f 70 54 79 70 65 20 | 20 6f 74 55 6e 6b 6e 6f | opType | otUnkno|
|00001b70| 77 6e 43 6f 64 65 73 20 | 3c 3d 20 20 3f 45 58 49 |wnCodes |<= ?EXI|
|00001b80| 54 0d 0d 5c 20 69 6e 73 | 74 65 61 64 20 6f 66 20 |T..\ ins|tead of |
|00001b90| 63 6c 6f 62 62 65 72 69 | 6e 67 20 72 65 67 73 20 |clobberi|ng regs |
|00001ba0| 61 74 20 6c 6f 6f 70 20 | 73 74 61 72 74 2c 20 49 |at loop |start, I|
|00001bb0| 27 6d 20 6e 6f 77 20 74 | 72 79 69 6e 67 20 74 6f |'m now t|rying to|
|00001bc0| 20 6a 75 73 74 0d 5c 20 | 67 69 76 65 20 22 6e 6f | just.\ |give "no|
|00001bd0| 74 20 65 71 75 61 6c 22 | 20 68 65 72 65 2c 20 69 |t equal"| here, i|
|00001be0| 66 20 77 65 27 72 65 20 | 69 6e 20 61 20 6c 6f 6f |f we're |in a loo|
|00001bf0| 70 2c 20 61 6e 64 20 6f | 70 43 44 50 20 69 73 20 |p, and o|pCDP is |
|00001c00| 62 65 66 6f 72 65 20 74 | 68 65 20 6c 6f 6f 70 2e |before t|he loop.|
|00001c10| 0d 0d 09 6c 6f 6f 70 5f | 73 74 61 72 74 0d 09 49 |...loop_|start..I|
|00001c20| 46 09 67 65 74 3a 20 6f | 70 43 44 50 20 20 6c 6f |F.get: o|pCDP lo|
|00001c30| 6f 70 5f 73 74 61 72 74 | 20 20 75 3c 20 20 3f 45 |op_start| u< ?E|
|00001c40| 58 49 54 0d 09 54 48 45 | 4e 0d 0d 5c 20 73 70 65 |XIT..THE|N..\ spe|
|00001c50| 63 69 61 6c 20 63 61 73 | 65 3a 20 6f 70 54 79 70 |cial cas|e: opTyp|
|00001c60| 65 73 20 6f 74 46 65 74 | 63 68 20 61 6e 64 20 6f |es otFet|ch and o|
|00001c70| 74 53 74 6f 72 65 20 6d | 61 74 63 68 2e 0d 0d 09 |tStore m|atch....|
|00001c80| 5e 4f 44 20 67 65 74 3a | 20 69 76 61 72 3e 20 6f |^OD get:| ivar> o|
|00001c90| 70 54 79 70 65 20 69 6e | 20 63 6c 61 73 73 5f 61 |pType in| class_a|
|00001ca0| 73 3e 20 4f 44 0d 09 64 | 75 70 20 20 6f 74 46 65 |s> OD..d|up otFe|
|00001cb0| 74 63 68 20 3d 20 73 77 | 61 70 20 6f 74 53 74 6f |tch = sw|ap otSto|
|00001cc0| 72 65 20 3d 20 6f 72 0d | 09 67 65 74 3a 20 6f 70 |re = or.|.get: op|
|00001cd0| 54 79 70 65 20 20 20 64 | 75 70 20 20 6f 74 46 65 |Type d|up otFe|
|00001ce0| 74 63 68 20 3d 20 73 77 | 61 70 20 6f 74 53 74 6f |tch = sw|ap otSto|
|00001cf0| 72 65 20 3d 20 6f 72 20 | 20 61 6e 64 0d 09 4e 49 |re = or | and..NI|
|00001d00| 46 0d 09 09 5e 4f 44 20 | 67 65 74 3a 20 69 76 61 |F...^OD |get: iva|
|00001d10| 72 3e 20 6f 70 54 79 70 | 65 20 69 6e 20 4f 44 09 |r> opTyp|e in OD.|
|00001d20| 09 67 65 74 3a 20 6f 70 | 54 79 70 65 20 3c 3e 09 |.get: op|Type <>.|
|00001d30| 3f 45 58 49 54 0d 09 54 | 48 45 4e 0d 0d 09 5e 4f |?EXIT..T|HEN...^O|
|00001d40| 44 20 67 65 74 3a 20 69 | 76 61 72 3e 20 6c 65 6e |D get: i|var> len|
|00001d50| 20 69 6e 20 4f 44 09 09 | 67 65 74 3a 20 6c 65 6e | in OD..|get: len|
|00001d60| 20 3c 3e 09 3f 45 58 49 | 54 0d 0d 09 5e 4f 44 20 | <>.?EXI|T...^OD |
|00001d70| 61 64 64 72 3a 20 69 76 | 61 72 3e 20 41 5f 6f 70 |addr: iv|ar> A_op|
|00001d80| 6e 64 20 69 6e 20 63 6c | 61 73 73 5f 61 73 3e 20 |nd in cl|ass_as> |
|00001d90| 4f 44 20 20 3d 3f 3a 20 | 41 5f 6f 70 6e 64 20 20 |OD =?: |A_opnd |
|00001da0| 30 45 58 49 54 0d 09 5e | 4f 44 20 61 64 64 72 3a |0EXIT..^|OD addr:|
|00001db0| 20 69 76 61 72 3e 20 42 | 5f 6f 70 6e 64 20 69 6e | ivar> B|_opnd in|
|00001dc0| 20 63 6c 61 73 73 5f 61 | 73 3e 20 4f 44 20 20 3d | class_a|s> OD =|
|00001dd0| 3f 3a 20 42 5f 6f 70 6e | 64 20 20 30 45 58 49 54 |?: B_opn|d 0EXIT|
|00001de0| 0d 09 5e 4f 44 20 61 64 | 64 72 3a 20 69 76 61 72 |..^OD ad|dr: ivar|
|00001df0| 3e 20 43 5f 6f 70 6e 64 | 20 69 6e 20 63 6c 61 73 |> C_opnd| in clas|
|00001e00| 73 5f 61 73 3e 20 4f 44 | 20 20 3d 3f 3a 20 43 5f |s_as> OD| =?: C_|
|00001e10| 6f 70 6e 64 20 20 30 45 | 58 49 54 0d 09 5e 4f 44 |opnd 0E|XIT..^OD|
|00001e20| 20 67 65 74 3a 20 69 76 | 61 72 3e 20 63 6f 6d 70 | get: iv|ar> comp|
|00001e30| 6c 42 3f 20 69 6e 20 63 | 6c 61 73 73 5f 61 73 3e |lB? in c|lass_as>|
|00001e40| 20 4f 44 20 20 67 65 74 | 3a 20 63 6f 6d 70 6c 42 | OD get|: complB|
|00001e50| 3f 20 3c 3e 20 20 3f 45 | 58 49 54 0d 09 5e 4f 44 |? <> ?E|XIT..^OD|
|00001e60| 20 67 65 74 3a 20 69 76 | 61 72 3e 20 63 6f 6d 70 | get: iv|ar> comp|
|00001e70| 6c 52 65 73 75 6c 74 3f | 20 69 6e 20 63 6c 61 73 |lResult?| in clas|
|00001e80| 73 5f 61 73 3e 20 4f 44 | 20 20 67 65 74 3a 20 63 |s_as> OD| get: c|
|00001e90| 6f 6d 70 6c 52 65 73 75 | 6c 74 3f 20 3c 3e 20 3f |omplResu|lt? <> ?|
|00001ea0| 45 58 49 54 0d 09 0d 09 | 67 65 74 3a 20 6f 70 54 |EXIT....|get: opT|
|00001eb0| 79 70 65 20 20 6f 74 53 | 68 69 66 74 26 6d 61 73 |ype otS|hift&mas|
|00001ec0| 6b 20 3d 0d 09 49 46 0d | 09 09 5e 4f 44 20 67 65 |k =..IF.|..^OD ge|
|00001ed0| 74 3a 20 69 76 61 72 3e | 20 6d 61 73 6b 42 65 67 |t: ivar>| maskBeg|
|00001ee0| 69 6e 20 69 6e 20 63 6c | 61 73 73 5f 61 73 3e 20 |in in cl|ass_as> |
|00001ef0| 4f 44 20 20 67 65 74 3a | 20 6d 61 73 6b 42 65 67 |OD get:| maskBeg|
|00001f00| 69 6e 20 3c 3e 20 20 3f | 45 58 49 54 0d 09 09 5e |in <> ?|EXIT...^|
|00001f10| 4f 44 20 67 65 74 3a 20 | 69 76 61 72 3e 20 6d 61 |OD get: |ivar> ma|
|00001f20| 73 6b 45 6e 64 20 69 6e | 20 63 6c 61 73 73 5f 61 |skEnd in| class_a|
|00001f30| 73 3e 20 4f 44 20 20 67 | 65 74 3a 20 6d 61 73 6b |s> OD g|et: mask|
|00001f40| 45 6e 64 20 3c 3e 20 20 | 3f 45 58 49 54 0d 09 54 |End <> |?EXIT..T|
|00001f50| 48 45 4e 0d 0d 09 64 72 | 6f 70 20 20 74 72 75 65 |HEN...dr|op true|
|00001f60| 0d 3b 6d 0d 0d 0d 3a 6d | 20 4f 56 45 52 4c 41 50 |.;m...:m| OVERLAP|
|00001f70| 3f 3a 20 20 7b 20 5e 4f | 44 20 5c 20 6c 6f 20 68 |?: { ^O|D \ lo h|
|00001f80| 69 20 2d 2d 20 62 20 7d | 09 09 5c 20 75 73 65 64 |i -- b }|..\ used|
|00001f90| 20 77 68 65 6e 20 63 68 | 65 63 6b 69 6e 67 20 69 | when ch|ecking i|
|00001fa0| 66 20 61 20 73 74 6f 72 | 65 20 68 61 73 20 63 6c |f a stor|e has cl|
|00001fb0| 6f 62 62 65 72 65 64 0d | 09 09 09 09 09 09 09 09 |obbered.|........|
|00001fc0| 09 09 5c 20 20 61 6e 6f | 74 68 65 72 20 72 65 73 |..\ ano|ther res|
|00001fd0| 75 6c 74 2e 0d 09 66 61 | 6c 73 65 0d 0d 5c 20 46 |ult...fa|lse..\ F|
|00001fe0| 69 72 73 74 2c 20 69 66 | 20 6f 70 54 79 70 65 20 |irst, if| opType |
|00001ff0| 69 73 20 65 6d 70 74 79 | 20 6f 72 20 75 6e 6b 6e |is empty| or unkn|
|00002000| 6f 77 6e 2c 20 63 61 6e | 27 74 20 6f 76 65 72 6c |own, can|'t overl|
|00002010| 61 70 20 6e 6f 20 6d 61 | 74 74 65 72 20 77 68 61 |ap no ma|tter wha|
|00002020| 74 2e 0d 0d 09 67 65 74 | 3a 20 6f 70 54 79 70 65 |t....get|: opType|
|00002030| 20 20 6f 74 55 6e 6b 6e | 6f 77 6e 43 6f 64 65 73 | otUnkn|ownCodes|
|00002040| 20 3c 3d 20 20 3f 45 58 | 49 54 0d 0d 5c 20 6e 6f | <= ?EX|IT..\ no|
|00002050| 77 20 77 65 20 6f 6e 6c | 79 20 63 6f 6e 73 69 64 |w we onl|y consid|
|00002060| 65 72 20 74 68 65 20 6d | 65 6d 6f 72 79 20 72 65 |er the m|emory re|
|00002070| 66 65 72 65 6e 63 69 6e | 67 20 74 79 70 65 73 20 |ferencin|g types |
|00002080| 2d 20 66 65 74 63 68 20 | 61 6e 64 20 73 74 6f 72 |- fetch |and stor|
|00002090| 65 2e 0d 0d 09 5e 4f 44 | 20 67 65 74 3a 20 69 76 |e....^OD| get: iv|
|000020a0| 61 72 3e 20 6f 70 54 79 | 70 65 20 69 6e 20 63 6c |ar> opTy|pe in cl|
|000020b0| 61 73 73 5f 61 73 3e 20 | 4f 44 0d 09 09 09 09 09 |ass_as> |OD......|
|000020c0| 6d 65 6d 5f 72 65 66 65 | 72 65 6e 63 69 6e 67 3f |mem_refe|rencing?|
|000020d0| 20 20 30 45 58 49 54 0d | 09 67 65 74 3a 20 6f 70 | 0EXIT.|.get: op|
|000020e0| 54 79 70 65 09 09 6d 65 | 6d 5f 72 65 66 65 72 65 |Type..me|m_refere|
|000020f0| 6e 63 69 6e 67 3f 20 20 | 30 45 58 49 54 09 09 5c |ncing? |0EXIT..\|
|00002100| 20 6f 75 74 20 69 66 20 | 65 69 74 68 65 72 20 69 | out if |either i|
|00002110| 73 6e 27 74 20 61 20 66 | 65 74 63 68 20 6f 72 20 |sn't a f|etch or |
|00002120| 73 74 6f 72 65 0d 0d 09 | 5e 4f 44 20 61 64 64 72 |store...|^OD addr|
|00002130| 3a 20 69 76 61 72 3e 20 | 41 5f 6f 70 6e 64 20 69 |: ivar> |A_opnd i|
|00002140| 6e 20 63 6c 61 73 73 5f | 61 73 3e 20 4f 44 20 20 |n class_|as> OD |
|00002150| 3d 3f 3a 20 41 5f 6f 70 | 6e 64 20 20 30 45 58 49 |=?: A_op|nd 0EXI|
|00002160| 54 0d 09 09 09 09 09 09 | 09 09 09 09 09 09 5c 20 |T.......|......\ |
|00002170| 63 61 6e 27 74 20 6f 76 | 65 72 6c 61 70 20 69 66 |can't ov|erlap if|
|00002180| 20 62 61 73 65 20 72 65 | 67 20 64 69 66 66 65 72 | base re|g differ|
|00002190| 65 6e 74 0d 09 0d 09 64 | 72 6f 70 09 09 09 09 09 |ent....d|rop.....|
|000021a0| 09 09 09 09 09 5c 20 66 | 72 6f 6d 20 68 65 72 65 |.....\ f|rom here|
|000021b0| 20 6f 6e 2c 20 77 65 20 | 6d 69 67 68 74 20 72 65 | on, we |might re|
|000021c0| 74 75 72 6e 20 74 72 75 | 65 0d 0d 5c 20 6e 6f 77 |turn tru|e..\ now|
|000021d0| 20 69 66 20 65 69 74 68 | 65 72 20 32 6e 64 20 6f | if eith|er 2nd o|
|000021e0| 70 65 72 61 6e 64 20 69 | 73 6e 27 74 20 6c 69 74 |perand i|sn't lit|
|000021f0| 65 72 61 6c 2c 20 77 65 | 20 63 61 6e 27 74 20 69 |eral, we| can't i|
|00002200| 6e 20 67 65 6e 65 72 61 | 6c 20 64 65 74 65 72 6d |n genera|l determ|
|00002210| 69 6e 65 20 61 74 20 63 | 6f 6d 70 69 6c 65 0d 5c |ine at c|ompile.\|
|00002220| 20 20 74 69 6d 65 20 77 | 68 65 74 68 65 72 20 74 | time w|hether t|
|00002230| 68 65 72 65 20 6d 69 67 | 68 74 20 62 65 20 61 6e |here mig|ht be an|
|00002240| 20 6f 76 65 72 6c 61 70 | 20 6f 72 20 6e 6f 74 2c | overlap| or not,|
|00002250| 20 73 6f 20 77 65 20 68 | 61 76 65 20 74 6f 20 63 | so we h|ave to c|
|00002260| 6f 6e 73 65 72 76 61 74 | 69 76 65 6c 79 0d 5c 20 |onservat|ively.\ |
|00002270| 20 61 73 73 75 6d 65 20 | 74 68 65 72 65 20 69 73 | assume |there is|
|00002280| 2e 0d 0d 09 5e 4f 44 20 | 20 72 65 66 54 79 70 65 |....^OD | refType|
|00002290| 3a 20 69 76 61 72 3e 20 | 42 5f 6f 70 6e 64 20 69 |: ivar> |B_opnd i|
|000022a0| 6e 20 63 6c 61 73 73 5f | 61 73 3e 20 4f 44 20 20 |n class_|as> OD |
|000022b0| 6c 69 74 52 65 66 20 3c | 3e 20 20 49 46 20 20 74 |litRef <|> IF t|
|000022c0| 72 75 65 20 20 45 58 49 | 54 20 20 54 48 45 4e 0d |rue EXI|T THEN.|
|000022d0| 09 72 65 66 54 79 70 65 | 3a 20 20 42 5f 6f 70 6e |.refType|: B_opn|
|000022e0| 64 09 09 09 09 09 09 09 | 6c 69 74 52 65 66 20 3c |d.......|litRef <|
|000022f0| 3e 20 20 49 46 20 20 74 | 72 75 65 20 20 45 58 49 |> IF t|rue EXI|
|00002300| 54 20 20 54 48 45 4e 0d | 0d 5c 20 6e 6f 77 20 62 |T THEN.|.\ now b|
|00002310| 6f 74 68 20 61 64 64 72 | 65 73 73 65 73 20 61 72 |oth addr|esses ar|
|00002320| 65 20 62 61 73 65 2d 64 | 69 73 70 6c 61 63 65 6d |e base-d|isplacem|
|00002330| 65 6e 74 2c 20 61 6e 64 | 20 74 68 65 20 62 61 73 |ent, and| the bas|
|00002340| 65 73 20 61 72 65 20 74 | 68 65 20 73 61 6d 65 2e |es are t|he same.|
|00002350| 20 20 57 65 20 77 6f 72 | 6b 0d 5c 20 20 6f 75 74 | We wor|k.\ out|
|00002360| 20 66 72 6f 6d 20 74 68 | 65 20 64 69 73 70 6c 61 | from th|e displa|
|00002370| 63 65 6d 65 6e 74 73 20 | 61 6e 64 20 6c 65 6e 67 |cements |and leng|
|00002380| 74 68 73 20 77 68 65 74 | 68 65 72 20 74 68 65 72 |ths whet|her ther|
|00002390| 65 27 73 20 61 6e 20 6f | 76 65 72 6c 61 70 2e 0d |e's an o|verlap..|
|000023a0| 0d 09 5e 4f 44 20 42 6c | 69 74 3a 20 63 6c 61 73 |..^OD Bl|it: clas|
|000023b0| 73 5f 61 73 3e 20 4f 44 | 20 20 2d 3e 20 6c 6f 0d |s_as> OD| -> lo.|
|000023c0| 09 5e 4f 44 20 67 65 74 | 3a 20 69 76 61 72 3e 20 |.^OD get|: ivar> |
|000023d0| 6c 65 6e 20 69 6e 20 63 | 6c 61 73 73 5f 61 73 3e |len in c|lass_as>|
|000023e0| 20 4f 44 20 20 6c 6f 20 | 2b 20 31 2d 20 20 2d 3e | OD lo |+ 1- ->|
|000023f0| 20 68 69 0d 09 0d 09 42 | 6c 69 74 3a 20 73 65 6c | hi....B|lit: sel|
|00002400| 66 09 09 6c 6f 20 68 69 | 20 20 75 77 69 74 68 69 |f..lo hi| uwithi|
|00002410| 6e 3f 20 20 73 77 61 70 | 0d 09 67 65 74 3a 20 6c |n? swap|..get: l|
|00002420| 65 6e 20 2b 20 31 2d 09 | 6c 6f 20 68 69 20 20 75 |en + 1-.|lo hi u|
|00002430| 77 69 74 68 69 6e 3f 20 | 20 6e 69 70 20 20 6f 72 |within? | nip or|
|00002440| 0d 3b 6d 0d 0d 0d 3a 6d | 20 50 52 49 4e 54 3a 0d |.;m...:m| PRINT:.|
|00002450| 09 3f 70 61 75 73 65 20 | 20 63 72 0d 09 70 72 69 |.?pause | cr..pri|
|00002460| 6e 74 3a 20 6d 79 52 65 | 66 0d 5c 09 67 65 74 3a |nt: myRe|f.\.get:|
|00002470| 20 6f 70 54 79 70 65 0d | 5c 09 4e 49 46 20 20 2e | opType.|\.NIF .|
|00002480| 22 20 65 6d 70 74 79 20 | 20 22 0d 5c 09 45 4c 53 |" empty | ".\.ELS|
|00002490| 45 0d 09 09 68 65 78 0d | 09 09 2e 22 20 6f 70 54 |E...hex.|..." opT|
|000024a0| 79 70 65 20 20 20 20 20 | 20 20 22 09 70 72 69 6e |ype | ".prin|
|000024b0| 74 3a 20 6f 70 54 79 70 | 65 09 63 72 0d 09 09 2e |t: opTyp|e.cr....|
|000024c0| 22 20 53 75 62 54 79 70 | 65 20 20 20 20 20 20 22 |" SubTyp|e "|
|000024d0| 09 70 72 69 6e 74 3a 20 | 73 75 62 54 79 70 65 09 |.print: |subType.|
|000024e0| 63 72 0d 09 09 2e 22 20 | 69 6e 73 74 72 6e 54 79 |cr...." |instrnTy|
|000024f0| 70 65 20 20 20 22 09 70 | 72 69 6e 74 3a 20 69 6e |pe ".p|rint: in|
|00002500| 73 74 72 6e 54 79 70 65 | 20 63 72 0d 09 09 2e 22 |strnType| cr...."|
|00002510| 20 6c 65 6e 20 20 20 20 | 20 20 20 20 20 20 22 09 | len | ".|
|00002520| 70 72 69 6e 74 3a 20 6c | 65 6e 09 09 63 72 0d 09 |print: l|en..cr..|
|00002530| 09 2e 22 20 6c 65 6e 67 | 74 68 20 20 20 20 20 20 |.." leng|th |
|00002540| 20 22 09 70 72 69 6e 74 | 3a 20 6c 65 6e 67 74 68 | ".print|: length|
|00002550| 09 63 72 0d 09 09 64 65 | 63 69 6d 61 6c 0d 09 09 |.cr...de|cimal...|
|00002560| 2e 22 20 41 5f 6f 70 6e | 64 20 20 20 20 20 20 20 |." A_opn|d |
|00002570| 22 09 70 72 69 6e 74 3a | 20 41 5f 6f 70 6e 64 0d |".print:| A_opnd.|
|00002580| 09 09 2e 22 20 42 5f 6f | 70 6e 64 20 20 20 20 20 |..." B_o|pnd |
|00002590| 20 20 22 09 70 72 69 6e | 74 3a 20 42 5f 6f 70 6e | ".prin|t: B_opn|
|000025a0| 64 0d 09 09 2e 22 20 43 | 5f 6f 70 6e 64 20 20 20 |d...." C|_opnd |
|000025b0| 20 20 20 20 22 09 70 72 | 69 6e 74 3a 20 43 5f 6f | ".pr|int: C_o|
|000025c0| 70 6e 64 0d 09 09 68 65 | 78 0d 09 09 2e 22 20 73 |pnd...he|x...." s|
|000025d0| 70 65 63 69 61 6c 3f 20 | 20 20 20 20 20 20 22 09 |pecial? | ".|
|000025e0| 70 72 69 6e 74 3a 20 73 | 70 65 63 69 61 6c 3f 09 |print: s|pecial?.|
|000025f0| 09 63 72 0d 09 09 2e 22 | 20 70 65 72 6d 61 6e 65 |.cr...."| permane|
|00002600| 6e 74 3f 20 20 20 20 20 | 22 20 70 72 69 6e 74 3a |nt? |" print:|
|00002610| 20 70 65 72 6d 61 6e 65 | 6e 74 3f 09 63 72 0d 09 | permane|nt?.cr..|
|00002620| 09 2e 22 20 64 6f 6e 74 | 48 6f 69 73 74 3f 20 20 |.." dont|Hoist? |
|00002630| 20 20 20 22 09 70 72 69 | 6e 74 3a 20 64 6f 6e 74 | ".pri|nt: dont|
|00002640| 48 6f 69 73 74 3f 09 63 | 72 0d 09 09 2e 22 20 63 |Hoist?.c|r...." c|
|00002650| 6f 6d 70 6c 42 3f 20 20 | 20 20 20 20 20 20 22 09 |omplB? | ".|
|00002660| 70 72 69 6e 74 3a 20 63 | 6f 6d 70 6c 42 3f 09 09 |print: c|omplB?..|
|00002670| 63 72 0d 09 09 2e 22 20 | 63 6f 6d 70 6c 52 65 73 |cr...." |complRes|
|00002680| 75 6c 74 3f 20 20 20 22 | 09 70 72 69 6e 74 3a 20 |ult? "|.print: |
|00002690| 63 6f 6d 70 6c 52 65 73 | 75 6c 74 3f 09 63 72 0d |complRes|ult?.cr.|
|000026a0| 09 09 2e 22 20 66 6c 61 | 67 73 20 20 20 20 20 20 |..." fla|gs |
|000026b0| 20 20 20 20 22 09 70 72 | 69 6e 74 3a 20 46 6c 61 | ".pr|int: Fla|
|000026c0| 67 73 09 09 63 72 0d 09 | 09 0d 09 09 67 65 74 3a |gs..cr..|....get:|
|000026d0| 20 6f 70 54 79 70 65 20 | 20 6f 74 53 68 69 66 74 | opType | otShift|
|000026e0| 26 6d 61 73 6b 20 3d 0d | 09 09 49 46 09 2e 22 20 |&mask =.|..IF.." |
|000026f0| 6d 61 73 6b 42 65 67 69 | 6e 20 20 20 20 20 20 22 |maskBegi|n "|
|00002700| 09 70 72 69 6e 74 3a 20 | 6d 61 73 6b 42 65 67 69 |.print: |maskBegi|
|00002710| 6e 09 63 72 0d 09 09 09 | 2e 22 20 6d 61 73 6b 45 |n.cr....|." maskE|
|00002720| 6e 64 20 20 20 20 20 20 | 20 20 22 09 70 72 69 6e |nd | ".prin|
|00002730| 74 3a 20 6d 61 73 6b 45 | 6e 64 09 09 63 72 0d 09 |t: maskE|nd..cr..|
|00002740| 09 54 48 45 4e 0d 09 09 | 2e 22 20 6f 70 43 44 50 |.THEN...|." opCDP|
|00002750| 20 20 20 20 20 20 20 20 | 20 20 22 09 67 65 74 3a | | ".get:|
|00002760| 20 6f 70 43 44 50 20 75 | 2e 09 09 63 72 0d 09 09 | opCDP u|...cr...|
|00002770| 2e 22 20 6c 61 73 74 52 | 65 66 43 44 50 20 20 20 |." lastR|efCDP |
|00002780| 20 20 22 09 67 65 74 3a | 20 6c 61 73 74 52 65 66 | ".get:| lastRef|
|00002790| 43 44 50 20 75 2e 09 09 | 63 72 0d 09 09 2e 22 20 |CDP u...|cr...." |
|000027a0| 70 72 65 76 4c 61 73 74 | 52 65 66 43 44 50 20 22 |prevLast|RefCDP "|
|000027b0| 09 67 65 74 3a 20 70 72 | 65 76 4c 61 73 74 52 65 |.get: pr|evLastRe|
|000027c0| 66 43 44 50 20 75 2e 09 | 63 72 0d 09 09 2e 22 20 |fCDP u..|cr...." |
|000027d0| 76 61 6c 69 64 54 69 6c | 6c 43 44 50 20 20 20 22 |validTil|lCDP "|
|000027e0| 09 67 65 74 3a 20 76 61 | 6c 69 64 54 69 6c 6c 43 |.get: va|lidTillC|
|000027f0| 44 50 20 75 2e 09 09 63 | 72 0d 09 09 64 65 63 69 |DP u...c|r...deci|
|00002800| 6d 61 6c 0d 5c 09 54 48 | 45 4e 0d 09 2e 22 20 72 |mal.\.TH|EN..." r|
|00002810| 65 66 43 6e 74 20 20 20 | 20 22 09 70 72 69 6e 74 |efCnt | ".print|
|00002820| 3a 20 72 65 66 43 6e 74 | 09 63 72 0d 3b 6d 0d 0d |: refCnt|.cr.;m..|
|00002830| 3a 6d 20 52 45 46 5f 47 | 4f 4e 45 3a 0d 09 67 65 |:m REF_G|ONE:..ge|
|00002840| 74 3a 20 70 72 65 76 4c | 61 73 74 52 65 66 43 44 |t: prevL|astRefCD|
|00002850| 50 20 20 70 75 74 3a 20 | 6c 61 73 74 52 65 66 43 |P put: |lastRefC|
|00002860| 44 50 20 20 63 6c 65 61 | 72 3a 20 70 72 65 76 4c |DP clea|r: prevL|
|00002870| 61 73 74 52 65 66 43 44 | 50 20 20 3b 6d 0d 0d 3a |astRefCD|P ;m..:|
|00002880| 6d 20 28 44 45 4c 45 54 | 45 29 3a 0d 09 64 65 62 |m (DELET|E):..deb|
|00002890| 75 67 3f 20 69 66 0d 09 | 09 2e 22 20 2a 2a 20 64 |ug? if..|.." ** d|
|000028a0| 65 6c 65 74 69 6e 67 20 | 69 6e 73 74 72 75 63 74 |eleting |instruct|
|000028b0| 69 6f 6e 20 61 74 20 22 | 20 67 65 74 3a 20 6f 70 |ion at "| get: op|
|000028c0| 43 44 50 20 2e 68 20 20 | 63 72 0d 09 09 70 72 69 |CDP .h |cr...pri|
|000028d0| 6e 74 3a 20 73 65 6c 66 | 0d 09 74 68 65 6e 0d 0d |nt: self|..then..|
|000028e0| 5c 20 66 69 72 73 74 2c | 20 61 6e 20 69 6d 70 6f |\ first,| an impo|
|000028f0| 72 74 61 6e 74 20 65 72 | 72 6f 72 20 63 68 65 63 |rtant er|ror chec|
|00002900| 6b 20 2d 20 74 68 69 73 | 20 6f 6e 65 20 63 61 6e |k - this| one can|
|00002910| 20 77 69 70 65 20 6f 75 | 74 20 74 68 65 20 73 79 | wipe ou|t the sy|
|00002920| 73 74 65 6d 3a 0d 09 67 | 65 74 3a 20 6f 70 43 44 |stem:..g|et: opCD|
|00002930| 50 20 4e 49 46 20 2e 22 | 20 61 74 74 65 6d 70 74 |P NIF ."| attempt|
|00002940| 20 74 6f 20 64 65 6c 65 | 74 65 20 66 72 6f 6d 20 | to dele|te from |
|00002950| 43 44 50 20 7a 65 72 6f | 21 22 20 31 20 64 69 65 |CDP zero|!" 1 die|
|00002960| 20 20 54 48 45 4e 0d 09 | 0d 5c 20 6e 6f 77 20 77 | THEN..|.\ now w|
|00002970| 65 20 6d 6f 76 65 20 74 | 68 65 20 73 75 62 73 65 |e move t|he subse|
|00002980| 71 75 65 6e 74 20 69 6e | 73 74 72 75 63 74 69 6f |quent in|structio|
|00002990| 6e 73 20 64 6f 77 6e 2e | 0d 09 67 65 74 3a 20 6f |ns down.|..get: o|
|000029a0| 70 43 44 50 20 67 65 74 | 3a 20 6c 65 6e 67 74 68 |pCDP get|: length|
|000029b0| 20 2b 09 09 09 5c 20 73 | 6f 75 72 63 65 0d 09 67 | +...\ s|ource..g|
|000029c0| 65 74 3a 20 6f 70 43 44 | 50 09 09 09 09 09 09 09 |et: opCD|P.......|
|000029d0| 5c 20 64 65 73 74 0d 09 | 43 44 50 20 20 67 65 74 |\ dest..|CDP get|
|000029e0| 3a 20 6f 70 43 44 50 20 | 2d 20 20 67 65 74 3a 20 |: opCDP |- get: |
|000029f0| 6c 65 6e 67 74 68 20 2d | 09 5c 20 6c 65 6e 67 74 |length -|.\ lengt|
|00002a00| 68 20 66 6f 72 20 6d 6f | 76 65 0d 09 6d 6f 76 65 |h for mo|ve..move|
|00002a10| 09 09 09 09 09 09 09 5c | 20 77 65 20 64 6f 6e 27 |.......\| we don'|
|00002a20| 74 20 75 73 65 20 61 6c | 69 67 6e 65 64 5f 6d 6f |t use al|igned_mo|
|00002a30| 76 65 20 77 68 69 63 68 | 20 69 73 0d 09 09 09 09 |ve which| is.....|
|00002a40| 09 09 09 09 09 5c 20 20 | 75 6e 64 65 66 69 6e 65 |.....\ |undefine|
|00002a50| 64 20 69 66 20 74 68 65 | 72 65 27 73 20 6f 76 65 |d if the|re's ove|
|00002a60| 72 6c 61 70 0d 09 67 65 | 74 3a 20 6c 65 6e 67 74 |rlap..ge|t: lengt|
|00002a70| 68 20 2d 2d 3e 20 43 44 | 50 0d 09 67 65 74 3a 20 |h --> CD|P..get: |
|00002a80| 6f 70 43 44 50 20 67 65 | 74 3a 20 6c 65 6e 67 74 |opCDP ge|t: lengt|
|00002a90| 68 20 2b 20 20 67 65 74 | 3a 20 6c 65 6e 67 74 68 |h + get|: length|
|00002aa0| 20 6e 65 67 61 74 65 20 | 20 75 70 64 61 74 65 5f | negate | update_|
|00002ab0| 43 44 50 73 0d 3b 6d 0d | 0d 3a 6d 20 44 45 4c 45 |CDPs.;m.|.:m DELE|
|00002ac0| 54 45 3a 0d 09 28 64 65 | 6c 65 74 65 29 3a 20 73 |TE:..(de|lete): s|
|00002ad0| 65 6c 66 0d 09 63 6c 65 | 61 72 3a 20 73 65 6c 66 |elf..cle|ar: self|
|00002ae0| 09 09 09 5c 20 69 74 27 | 73 20 67 6f 6e 65 2c 20 |...\ it'|s gone, |
|00002af0| 73 69 72 21 0d 09 72 65 | 66 5f 67 6f 6e 65 3a 20 |sir!..re|f_gone: |
|00002b00| 73 65 6c 66 0d 3b 6d 0d | 0d 3a 6d 20 3f 44 45 4c |self.;m.|.:m ?DEL|
|00002b10| 45 54 45 3a 09 09 5c 20 | 64 65 6c 65 74 65 73 20 |ETE:..\ |deletes |
|00002b20| 74 68 65 20 6f 70 20 69 | 66 20 69 74 27 73 20 73 |the op i|f it's s|
|00002b30| 61 66 65 20 74 6f 20 64 | 6f 20 73 6f 2e 0d 09 64 |afe to d|o so...d|
|00002b40| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 63 68 |ebug? if|...." ch|
|00002b50| 65 63 6b 69 6e 67 20 69 | 66 20 77 65 20 63 61 6e |ecking i|f we can|
|00002b60| 20 64 65 6c 65 74 65 20 | 74 68 69 73 20 69 6e 73 | delete |this ins|
|00002b70| 74 72 75 63 74 69 6f 6e | 3a 22 0d 09 09 70 72 69 |truction|:"...pri|
|00002b80| 6e 74 3a 20 73 65 6c 66 | 20 63 72 0d 09 74 68 65 |nt: self| cr..the|
|00002b90| 6e 0d 0d 09 67 65 74 3a | 20 72 65 66 63 6e 74 20 |n...get:| refcnt |
|00002ba0| 30 3e 0d 09 67 65 74 3a | 20 6c 61 73 74 52 65 66 |0>..get:| lastRef|
|00002bb0| 43 44 50 20 20 67 65 74 | 3a 20 6f 70 43 44 50 20 |CDP get|: opCDP |
|00002bc0| 20 43 44 50 20 20 75 77 | 69 74 68 69 6e 3f 20 6e | CDP uw|ithin? n|
|00002bd0| 69 70 20 20 6f 72 0d 09 | 0d 09 64 65 62 75 67 3f |ip or..|..debug?|
|00002be0| 20 69 66 0d 09 09 64 75 | 70 20 4e 49 46 20 2e 22 | if...du|p NIF ."|
|00002bf0| 20 79 65 73 2c 20 64 65 | 6c 65 74 69 6e 67 22 0d | yes, de|leting".|
|00002c00| 09 09 45 4c 53 45 09 2e | 22 20 6e 6f 2c 20 74 68 |..ELSE..|" no, th|
|00002c10| 65 72 65 27 73 20 61 6e | 20 69 6e 74 65 72 76 65 |ere's an| interve|
|00002c20| 6e 69 6e 67 20 6f 72 20 | 6f 75 74 73 74 61 6e 64 |ning or |outstand|
|00002c30| 69 6e 67 20 72 65 66 22 | 0d 09 09 54 48 45 4e 20 |ing ref"|...THEN |
|00002c40| 20 63 72 0d 09 74 68 65 | 6e 0d 0d 09 4e 49 46 20 | cr..the|n...NIF |
|00002c50| 20 64 65 6c 65 74 65 3a | 20 73 65 6c 66 20 20 54 | delete:| self T|
|00002c60| 48 45 4e 0d 3b 6d 0d 0d | 3a 6d 20 49 4e 53 45 52 |HEN.;m..|:m INSER|
|00002c70| 54 3a 20 20 7b 20 5c 20 | 6d 79 4f 70 43 44 50 20 |T: { \ |myOpCDP |
|00002c80| 2d 2d 20 7d 0d 09 64 65 | 62 75 67 3f 20 69 66 20 |-- }..de|bug? if |
|00002c90| 2e 22 20 2a 2a 20 69 6e | 73 65 72 74 69 6e 67 20 |." ** in|serting |
|00002ca0| 69 6e 73 74 72 75 63 74 | 69 6f 6e 20 61 74 20 22 |instruct|ion at "|
|00002cb0| 20 67 65 74 3a 20 6f 70 | 43 44 50 20 2e 68 20 20 | get: op|CDP .h |
|00002cc0| 63 72 20 20 74 68 65 6e | 0d 09 67 65 74 3a 20 6f |cr then|..get: o|
|00002cd0| 70 43 44 50 20 2d 3e 20 | 6d 79 4f 70 43 44 50 09 |pCDP -> |myOpCDP.|
|00002ce0| 5c 20 75 73 65 20 61 20 | 6c 6f 63 61 6c 20 61 73 |\ use a |local as|
|00002cf0| 20 6f 70 43 44 50 20 69 | 74 73 65 6c 66 20 77 69 | opCDP i|tself wi|
|00002d00| 6c 6c 20 67 65 74 20 75 | 70 64 61 74 65 64 20 62 |ll get u|pdated b|
|00002d10| 65 6c 6f 77 21 20 20 42 | 75 74 0d 09 09 09 09 09 |elow! B|ut......|
|00002d20| 09 5c 20 20 77 65 20 6d | 75 73 74 20 75 70 64 61 |.\ we m|ust upda|
|00002d30| 74 65 20 66 72 6f 6d 20 | 74 68 69 73 20 6f 70 43 |te from |this opC|
|00002d40| 44 50 20 69 6e 20 63 61 | 73 65 20 61 6e 6f 74 68 |DP in ca|se anoth|
|00002d50| 65 72 20 72 65 67 20 68 | 61 73 20 74 68 65 0d 09 |er reg h|as the..|
|00002d60| 09 09 09 09 09 5c 20 20 | 73 61 6d 65 20 6f 70 43 |.....\ |same opC|
|00002d70| 44 50 20 2d 20 74 68 61 | 74 20 6f 6e 65 20 4d 55 |DP - tha|t one MU|
|00002d80| 53 54 20 62 65 20 75 70 | 64 61 74 65 64 2e 0d 09 |ST be up|dated...|
|00002d90| 6d 79 4f 70 43 44 50 09 | 09 09 09 09 5c 20 73 6f |myOpCDP.|....\ so|
|00002da0| 75 72 63 65 0d 09 6d 79 | 4f 70 43 44 50 20 67 65 |urce..my|OpCDP ge|
|00002db0| 74 3a 20 6c 65 6e 67 74 | 68 20 2b 09 5c 20 64 65 |t: lengt|h +.\ de|
|00002dc0| 73 74 0d 09 43 44 50 20 | 20 6d 79 4f 70 43 44 50 |st..CDP | myOpCDP|
|00002dd0| 20 2d 09 09 09 5c 20 6c | 65 6e 67 74 68 0d 09 6d | -...\ l|ength..m|
|00002de0| 6f 76 65 09 09 09 09 5c | 20 64 6f 6e 27 74 20 75 |ove....\| don't u|
|00002df0| 73 65 20 61 6c 69 67 6e | 65 64 5f 6d 6f 76 65 20 |se align|ed_move |
|00002e00| 77 68 69 63 68 20 69 73 | 20 75 6e 64 65 66 69 6e |which is| undefin|
|00002e10| 65 64 20 69 66 0d 09 09 | 09 09 09 09 5c 20 20 74 |ed if...|....\ t|
|00002e20| 68 65 72 65 27 73 20 6f | 76 65 72 6c 61 70 0d 09 |here's o|verlap..|
|00002e30| 67 65 74 3a 20 6c 65 6e | 67 74 68 20 20 2b 2b 3e |get: len|gth ++>|
|00002e40| 20 43 44 50 0d 09 6d 79 | 4f 70 43 44 50 20 20 67 | CDP..my|OpCDP g|
|00002e50| 65 74 3a 20 6c 65 6e 67 | 74 68 20 20 75 70 64 61 |et: leng|th upda|
|00002e60| 74 65 5f 43 44 50 73 0d | 09 6d 79 4f 70 43 44 50 |te_CDPs.|.myOpCDP|
|00002e70| 20 70 75 74 3a 20 6f 70 | 43 44 50 09 5c 20 75 6e | put: op|CDP.\ un|
|00002e80| 64 6f 20 75 70 64 61 74 | 65 20 66 6f 72 20 74 68 |do updat|e for th|
|00002e90| 69 73 20 72 65 67 0d 3b | 6d 0d 0d 3a 6d 20 52 45 |is reg.;|m..:m RE|
|00002ea0| 50 4f 53 49 54 49 4f 4e | 3a 20 20 7b 20 6e 65 77 |POSITION|: { new|
|00002eb0| 43 44 50 20 2d 2d 20 7d | 0d 09 28 64 65 6c 65 74 |CDP -- }|..(delet|
|00002ec0| 65 29 3a 20 73 65 6c 66 | 0d 09 6e 65 77 43 44 50 |e): self|..newCDP|
|00002ed0| 20 70 75 74 3a 20 6f 70 | 43 44 50 0d 09 69 6e 73 | put: op|CDP..ins|
|00002ee0| 65 72 74 3a 20 73 65 6c | 66 0d 3b 6d 0d 0d 0d 28 |ert: sel|f.;m...(|
|00002ef0| 2a 09 46 52 45 45 3a 20 | 64 65 63 72 65 6d 65 6e |*.FREE: |decremen|
|00002f00| 74 73 20 74 68 65 20 72 | 65 66 43 6e 74 2e 20 20 |ts the r|efCnt. |
|00002f10| 57 65 20 64 6f 6e 27 74 | 20 6e 65 63 65 73 73 61 |We don't| necessa|
|00002f20| 72 69 6c 79 20 64 6f 20 | 61 6e 79 74 68 69 6e 67 |rily do |anything|
|00002f30| 20 69 66 20 69 74 0d 09 | 62 65 63 6f 6d 65 73 20 | if it..|becomes |
|00002f40| 7a 65 72 6f 2c 20 73 69 | 6e 63 65 20 77 65 20 6d |zero, si|nce we m|
|00002f50| 61 79 20 62 65 20 61 62 | 6c 65 20 74 6f 20 72 65 |ay be ab|le to re|
|00002f60| 75 73 65 20 74 68 65 20 | 76 61 6c 75 65 20 69 6e |use the |value in|
|00002f70| 20 74 68 65 20 72 65 67 | 20 66 6f 72 0d 09 61 20 | the reg| for..a |
|00002f80| 6c 61 74 65 72 20 6f 70 | 2e 20 20 48 6f 77 65 76 |later op|. Howev|
|00002f90| 65 72 2c 20 69 66 20 69 | 74 27 73 20 61 20 70 75 |er, if i|t's a pu|
|00002fa0| 6c 6c 2c 20 61 6e 64 20 | 74 68 65 72 65 20 61 72 |ll, and |there ar|
|00002fb0| 65 20 6e 6f 20 72 65 66 | 65 72 65 6e 63 65 73 0d |e no ref|erences.|
|00002fc0| 09 74 6f 20 74 68 65 20 | 76 61 6c 75 65 20 28 6c |.to the |value (l|
|00002fd0| 61 73 74 52 65 66 43 44 | 50 20 69 73 20 7a 65 72 |astRefCD|P is zer|
|00002fe0| 6f 29 2c 20 77 65 20 61 | 63 74 75 61 6c 6c 79 20 |o), we a|ctually |
|00002ff0| 64 65 6c 65 74 65 20 74 | 68 65 20 6f 70 2e 0d 09 |delete t|he op...|
|00003000| 54 68 69 73 20 69 73 20 | 77 6f 72 74 68 20 64 6f |This is |worth do|
|00003010| 69 6e 67 20 73 69 6e 63 | 65 3a 0d 09 31 2e 20 77 |ing sinc|e:..1. w|
|00003020| 65 20 63 6f 75 6c 64 20 | 6e 65 76 65 72 20 72 65 |e could |never re|
|00003030| 2d 75 73 65 20 74 68 65 | 20 76 61 6c 75 65 2c 20 |-use the| value, |
|00003040| 61 73 20 74 68 65 20 6f | 72 69 67 69 6e 61 6c 20 |as the o|riginal |
|00003050| 6f 70 20 69 73 20 75 6e | 6b 6e 6f 77 6e 2e 0d 09 |op is un|known...|
|00003060| 32 2e 20 74 68 65 72 65 | 20 61 72 65 20 71 75 69 |2. there| are qui|
|00003070| 74 65 20 61 20 6e 75 6d | 62 65 72 20 6f 66 20 74 |te a num|ber of t|
|00003080| 68 65 6d 0d 09 33 2e 20 | 69 74 27 73 20 61 6c 77 |hem..3. |it's alw|
|00003090| 61 79 73 20 73 61 66 65 | 20 28 63 6f 6d 70 50 75 |ays safe| (compPu|
|000030a0| 6c 6c 3a 20 61 6c 77 61 | 79 73 20 64 6f 65 73 20 |ll: alwa|ys does |
|000030b0| 74 68 65 20 72 69 67 68 | 74 20 74 68 69 6e 67 29 |the righ|t thing)|
|000030c0| 2e 0d 09 46 6f 72 20 6f | 74 68 65 72 20 6f 70 73 |...For o|ther ops|
|000030d0| 2c 20 49 20 64 6f 6e 27 | 74 20 61 6c 77 61 79 73 |, I don'|t always|
|000030e0| 20 73 65 74 20 6c 61 73 | 74 52 65 66 43 44 50 20 | set las|tRefCDP |
|000030f0| 73 6f 20 49 20 63 61 6e | 27 74 20 61 6c 77 61 79 |so I can|'t alway|
|00003100| 73 20 62 65 20 73 75 72 | 65 0d 09 74 68 65 20 6f |s be sur|e..the o|
|00003110| 70 20 69 73 20 75 6e 72 | 65 66 65 72 65 6e 63 65 |p is unr|eference|
|00003120| 64 2e 20 20 54 68 65 72 | 65 20 61 72 65 20 6f 6e |d. Ther|e are on|
|00003130| 6c 79 20 61 20 66 65 77 | 20 6f 66 20 74 68 65 6d |ly a few| of them|
|00003140| 20 69 6e 20 74 68 65 20 | 77 68 6f 6c 65 0d 09 4d | in the |whole..M|
|00003150| 6f 70 73 20 62 75 69 6c | 64 2c 20 61 6e 79 77 61 |ops buil|d, anywa|
|00003160| 79 2e 0d 2a 29 0d 0d 3a | 6d 20 46 52 45 45 3a 0d |y..*)..:|m FREE:.|
|00003170| 09 67 65 74 3a 20 72 65 | 66 43 6e 74 20 20 30 3c |.get: re|fCnt 0<|
|00003180| 3d 0d 09 49 46 09 63 6c | 65 61 72 3a 20 72 65 66 |=..IF.cl|ear: ref|
|00003190| 43 6e 74 20 20 45 58 49 | 54 20 20 54 48 45 4e 0d |Cnt EXI|T THEN.|
|000031a0| 09 09 09 09 5c 20 77 65 | 20 64 6f 20 6e 6f 74 68 |....\ we| do noth|
|000031b0| 69 6e 67 20 69 66 20 72 | 65 66 63 6e 74 20 69 73 |ing if r|efcnt is|
|000031c0| 20 7a 65 72 6f 20 2d 20 | 69 74 27 73 20 68 61 6e | zero - |it's han|
|000031d0| 64 79 20 74 6f 20 68 61 | 76 65 20 74 68 69 73 0d |dy to ha|ve this.|
|000031e0| 09 09 09 09 5c 20 20 6e | 6f 74 20 62 65 20 61 6e |....\ n|ot be an|
|000031f0| 20 65 72 72 6f 72 2c 20 | 73 75 63 68 20 61 73 20 | error, |such as |
|00003200| 77 68 65 6e 20 63 61 73 | 63 61 64 65 3f 20 68 61 |when cas|cade? ha|
|00003210| 73 20 64 65 6c 65 74 65 | 64 20 61 6e 20 6f 70 2e |s delete|d an op.|
|00003220| 0d 0d 09 31 20 2d 3a 20 | 72 65 66 43 6e 74 0d 0d |...1 -: |refCnt..|
|00003230| 09 67 65 74 3a 20 72 65 | 66 63 6e 74 0d 09 67 65 |.get: re|fcnt..ge|
|00003240| 74 3a 20 73 70 65 63 69 | 61 6c 3f 09 09 6f 72 0d |t: speci|al?..or.|
|00003250| 09 67 65 74 3a 20 6c 61 | 73 74 52 65 66 43 44 50 |.get: la|stRefCDP|
|00003260| 09 09 6f 72 0d 09 67 65 | 74 3a 20 6f 70 43 44 50 |..or..ge|t: opCDP|
|00003270| 20 20 31 30 30 30 20 75 | 3c 20 20 6f 72 0d 09 67 | 1000 u|< or..g|
|00003280| 65 74 3a 20 6f 70 43 44 | 50 20 20 62 61 73 69 63 |et: opCD|P basic|
|00003290| 5f 62 6c 6f 63 6b 5f 73 | 74 61 72 74 20 75 3c 20 |_block_s|tart u< |
|000032a0| 6f 72 0d 09 67 65 74 3a | 20 6f 70 54 79 70 65 20 |or..get:| opType |
|000032b0| 20 6f 74 55 6e 6b 50 75 | 6c 6c 65 64 20 3c 3e 09 | otUnkPu|lled <>.|
|000032c0| 6f 72 0d 09 4e 49 46 0d | 09 09 64 65 62 75 67 3f |or..NIF.|..debug?|
|000032d0| 20 69 66 0d 09 09 09 63 | 72 20 2e 22 20 64 65 6c | if....c|r ." del|
|000032e0| 65 74 69 6e 67 20 75 6e | 2d 72 65 66 65 72 65 6e |eting un|-referen|
|000032f0| 63 65 64 20 70 75 6c 6c | 3a 22 0d 09 09 09 70 72 |ced pull|:"....pr|
|00003300| 69 6e 74 3a 20 73 65 6c | 66 20 63 72 20 20 5b 20 |int: sel|f cr [ |
|00003310| 70 70 63 3f 20 6e 6f 74 | 20 5d 20 5b 69 66 5d 20 |ppc? not| ] [if] |
|00003320| 64 63 75 72 72 20 5b 74 | 68 65 6e 5d 0d 09 09 74 |dcurr [t|hen]...t|
|00003330| 68 65 6e 0d 09 09 64 65 | 6c 65 74 65 3a 20 73 65 |hen...de|lete: se|
|00003340| 6c 66 0d 09 54 48 45 4e | 0d 0d 09 67 65 74 3a 20 |lf..THEN|...get: |
|00003350| 73 70 65 63 69 61 6c 3f | 0d 09 49 46 09 67 65 74 |special?|..IF.get|
|00003360| 3a 20 72 65 66 43 6e 74 | 20 20 4e 49 46 20 20 31 |: refCnt| NIF 1|
|00003370| 20 70 75 74 3a 20 72 65 | 66 43 6e 74 20 20 54 48 | put: re|fCnt TH|
|00003380| 45 4e 0d 09 09 09 09 09 | 09 09 5c 20 73 70 65 63 |EN......|..\ spec|
|00003390| 69 61 6c 20 72 65 67 73 | 20 6d 75 73 74 6e 27 74 |ial regs| mustn't|
|000033a0| 20 67 65 74 20 7a 65 72 | 6f 20 72 65 66 43 6e 74 | get zer|o refCnt|
|000033b0| 0d 09 54 48 45 4e 0d 3b | 6d 0d 0d 30 20 76 61 6c |..THEN.;|m..0 val|
|000033c0| 75 65 20 7a 78 63 76 62 | 0d 0d 3a 6d 20 52 45 51 |ue zxcvb|..:m REQ|
|000033d0| 44 5f 43 44 50 3a 0d 09 | 28 2a 09 52 65 74 75 72 |D_CDP:..|(*.Retur|
|000033e0| 6e 73 20 74 68 65 20 65 | 61 72 6c 69 65 73 74 20 |ns the e|arliest |
|000033f0| 43 44 50 20 70 6f 73 69 | 74 69 6f 6e 20 74 6f 20 |CDP posi|tion to |
|00003400| 77 68 69 63 68 20 77 65 | 20 63 6f 75 6c 64 0d 09 |which we| could..|
|00003410| 09 6d 6f 76 65 20 74 68 | 69 73 20 6f 70 20 62 61 |.move th|is op ba|
|00003420| 63 6b 2c 20 61 73 20 64 | 65 74 65 72 6d 69 6e 65 |ck, as d|etermine|
|00003430| 64 20 62 79 20 69 74 73 | 20 61 6e 74 65 63 65 64 |d by its| anteced|
|00003440| 65 6e 74 0d 09 09 6f 70 | 73 2e 20 20 49 66 20 74 |ent...op|s. If t|
|00003450| 68 65 72 65 27 73 20 6e | 6f 20 72 65 6c 65 76 61 |here's n|o releva|
|00003460| 6e 74 20 61 6e 74 65 63 | 65 64 65 6e 74 2c 20 77 |nt antec|edent, w|
|00003470| 65 20 72 65 74 75 72 6e | 20 30 20 0d 09 09 73 69 |e return| 0 ...si|
|00003480| 6e 63 65 20 66 6f 72 20 | 6c 69 74 65 72 61 6c 73 |nce for |literals|
|00003490| 20 65 74 63 2e 20 74 68 | 65 72 65 27 73 20 6e 6f | etc. th|ere's no|
|000034a0| 20 62 6c 6f 63 6b 61 67 | 65 20 74 6f 20 6d 6f 76 | blockag|e to mov|
|000034b0| 65 6d 65 6e 74 20 0d 09 | 09 62 61 63 6b 2e 20 42 |ement ..|.back. B|
|000034c0| 75 74 20 69 66 20 74 68 | 65 20 6e 65 78 74 5f 43 |ut if th|e next_C|
|000034d0| 44 50 3a 20 63 61 6c 6c | 20 6f 6e 20 61 6e 20 61 |DP: call| on an a|
|000034e0| 6e 74 65 63 65 64 65 6e | 74 20 72 65 74 75 72 6e |nteceden|t return|
|000034f0| 73 0d 09 09 30 2c 20 74 | 68 69 73 20 6d 65 61 6e |s...0, t|his mean|
|00003500| 73 20 74 68 65 20 72 65 | 67 20 69 73 20 65 6d 70 |s the re|g is emp|
|00003510| 74 79 20 6f 72 20 75 6e | 6b 6e 6f 77 6e 2c 20 73 |ty or un|known, s|
|00003520| 6f 20 69 6e 20 74 68 69 | 73 20 0d 09 09 63 61 73 |o in thi|s ...cas|
|00003530| 65 20 77 65 20 72 65 74 | 75 72 6e 20 62 69 67 23 |e we ret|urn big#|
|00003540| 20 73 6f 20 74 68 61 74 | 20 68 6f 69 73 74 73 20 | so that| hoists |
|00003550| 28 77 68 69 63 68 20 63 | 6f 75 6c 64 20 77 65 6c |(which c|ould wel|
|00003560| 6c 20 0d 09 09 62 65 20 | 69 6e 76 61 6c 69 64 29 |l ...be |invalid)|
|00003570| 20 61 72 65 20 62 6c 6f | 63 6b 65 64 2e 0d 09 2a | are blo|cked...*|
|00003580| 29 0d 0d 5c 20 26 26 26 | 26 0d 0d 09 6e 65 78 74 |)..\ &&&|&...next|
|00003590| 5f 43 44 50 3a 20 41 5f | 6f 70 6e 64 09 64 75 70 |_CDP: A_|opnd.dup|
|000035a0| 20 4e 49 46 20 20 64 72 | 6f 70 20 62 69 67 23 20 | NIF dr|op big# |
|000035b0| 20 45 58 49 54 20 20 54 | 48 45 4e 0d 09 09 09 09 | EXIT T|HEN.....|
|000035c0| 09 09 64 75 70 20 2d 31 | 20 3d 20 49 46 20 20 64 |..dup -1| = IF d|
|000035d0| 72 6f 70 20 20 30 20 20 | 54 48 45 4e 0d 0d 09 6e |rop 0 |THEN...n|
|000035e0| 65 78 74 5f 43 44 50 3a | 20 42 5f 6f 70 6e 64 09 |ext_CDP:| B_opnd.|
|000035f0| 64 75 70 20 4e 49 46 20 | 20 32 64 72 6f 70 20 62 |dup NIF | 2drop b|
|00003600| 69 67 23 20 20 45 58 49 | 54 20 20 54 48 45 4e 0d |ig# EXI|T THEN.|
|00003610| 09 09 09 09 09 09 64 75 | 70 20 2d 31 20 3d 20 49 |......du|p -1 = I|
|00003620| 46 20 20 64 72 6f 70 20 | 20 30 20 20 54 48 45 4e |F drop | 0 THEN|
|00003630| 0d 09 75 6d 61 78 0d 09 | 67 65 74 3a 20 6f 70 54 |..umax..|get: opT|
|00003640| 79 70 65 20 20 6f 74 53 | 74 6f 72 65 20 3d 09 09 |ype otS|tore =..|
|00003650| 5c 20 66 6f 72 20 73 74 | 6f 72 65 73 2c 20 6c 61 |\ for st|ores, la|
|00003660| 73 74 52 65 66 43 44 50 | 20 6d 65 61 6e 73 20 74 |stRefCDP| means t|
|00003670| 68 65 20 43 44 50 20 77 | 68 65 72 65 0d 09 09 09 |he CDP w|here....|
|00003680| 09 09 09 09 09 5c 20 20 | 74 68 65 20 73 74 6f 72 |.....\ |the stor|
|00003690| 65 64 20 76 61 6c 75 65 | 20 77 61 73 20 67 65 6e |ed value| was gen|
|000036a0| 65 72 61 74 65 64 2c 20 | 73 6f 20 77 65 20 63 61 |erated, |so we ca|
|000036b0| 6e 27 74 0d 09 09 09 09 | 09 09 09 09 5c 20 20 68 |n't.....|....\ h|
|000036c0| 6f 69 73 74 20 62 65 66 | 6f 72 65 20 74 68 61 74 |oist bef|ore that|
|000036d0| 2e 0d 09 49 46 09 67 65 | 74 3a 20 6c 61 73 74 52 |...IF.ge|t: lastR|
|000036e0| 65 66 43 44 50 20 20 34 | 2b 20 20 75 6d 61 78 0d |efCDP 4|+ umax.|
|000036f0| 09 54 48 45 4e 0d 3b 6d | 0d 0d 0d 5c 20 43 6f 6d |.THEN.;m|...\ Com|
|00003700| 70 69 6c 61 74 69 6f 6e | 20 6d 65 74 68 6f 64 73 |pilation| methods|
|00003710| 3a 0d 0d 3a 6d 20 53 45 | 54 4c 49 54 3a 09 5c 20 |:..:m SE|TLIT:.\ |
|00003720| 28 20 6e 20 2d 2d 20 29 | 20 20 53 65 74 73 20 74 |( n -- )| Sets t|
|00003730| 68 69 73 20 4f 44 20 74 | 6f 20 61 20 6c 69 74 65 |his OD t|o a lite|
|00003740| 72 61 6c 20 66 65 74 63 | 68 20 6f 66 20 6e 2e 0d |ral fetc|h of n..|
|00003750| 09 63 6c 65 61 72 3a 20 | 73 65 6c 66 0d 09 6f 74 |.clear: |self..ot|
|00003760| 46 65 74 63 68 20 20 70 | 75 74 3a 20 6f 70 54 79 |Fetch p|ut: opTy|
|00003770| 70 65 0d 5c 09 6d 64 4c | 69 74 20 20 20 20 70 75 |pe.\.mdL|it pu|
|00003780| 74 3a 20 6d 6f 64 65 0d | 09 63 6c 65 61 72 3a 20 |t: mode.|.clear: |
|00003790| 41 5f 6f 70 6e 64 0d 09 | 3e 6c 69 74 3a 20 20 42 |A_opnd..|>lit: B|
|000037a0| 5f 6f 70 6e 64 0d 3b 6d | 0d 0d 0d 70 72 69 76 61 |_opnd.;m|...priva|
|000037b0| 74 65 0d 0d 28 2a 09 43 | 6f 6d 70 4c 69 74 3a 20 |te..(*.C|ompLit: |
|000037c0| 63 6f 6d 70 69 6c 65 73 | 20 61 20 6c 69 74 65 72 |compiles| a liter|
|000037d0| 61 6c 20 77 68 69 63 68 | 20 77 65 27 76 65 20 70 |al which| we've p|
|000037e0| 72 65 76 69 6f 75 73 6c | 79 20 73 65 74 20 75 70 |reviousl|y set up|
|000037f0| 20 76 69 61 20 73 65 74 | 4c 69 74 3a 2e 0d 09 46 | via set|Lit:...F|
|00003800| 6f 72 20 6c 69 74 65 72 | 61 6c 73 20 77 68 69 63 |or liter|als whic|
|00003810| 68 20 61 72 65 20 3c 3d | 20 31 36 20 62 69 74 73 |h are <=| 16 bits|
|00003820| 20 77 65 27 72 65 20 6d | 65 61 6e 74 20 74 6f 20 | we're m|eant to |
|00003830| 75 73 65 20 61 64 64 69 | 20 75 73 69 6e 67 20 22 |use addi| using "|
|00003840| 72 30 22 0d 09 61 73 20 | 74 68 65 20 41 20 6f 70 |r0"..as |the A op|
|00003850| 65 72 61 6e 64 20 28 77 | 68 69 63 68 20 61 63 74 |erand (w|hich act|
|00003860| 75 61 6c 6c 79 20 6d 65 | 61 6e 73 20 75 73 65 20 |ually me|ans use |
|00003870| 7a 65 72 6f 29 2e 20 20 | 46 6f 72 20 6c 69 74 73 |zero). |For lits|
|00003880| 20 3e 31 36 20 62 69 74 | 73 20 77 65 0d 09 75 73 | >16 bit|s we..us|
|00003890| 65 20 61 64 64 69 73 20 | 77 69 74 68 20 22 72 30 |e addis |with "r0|
|000038a0| 22 20 66 6f 72 20 74 68 | 65 20 68 69 20 31 36 20 |" for th|e hi 16 |
|000038b0| 62 69 74 73 2c 20 74 68 | 65 6e 20 6f 72 69 20 66 |bits, th|en ori f|
|000038c0| 6f 72 20 74 68 65 20 6c | 6f 20 31 36 20 62 69 74 |or the l|o 16 bit|
|000038d0| 73 2e 0d 09 0d 09 4e 6f | 74 65 3a 20 61 64 64 69 |s.....No|te: addi|
|000038e0| 20 61 6e 64 20 61 64 64 | 69 73 20 61 72 65 20 74 | and add|is are t|
|000038f0| 68 65 20 6f 6e 6c 79 20 | 69 6e 73 74 72 75 63 74 |he only |instruct|
|00003900| 69 6f 6e 73 20 74 68 61 | 74 20 75 73 65 20 61 20 |ions tha|t use a |
|00003910| 70 68 61 6e 74 6f 6d 20 | 22 72 30 22 0d 09 6c 69 |phantom |"r0"..li|
|00003920| 6b 65 20 74 68 69 73 2e | 20 20 4f 74 68 65 72 77 |ke this.| Otherw|
|00003930| 69 73 65 20 69 74 27 73 | 20 6f 6e 6c 79 20 64 6f |ise it's| only do|
|00003940| 6e 65 20 69 6e 20 61 64 | 64 72 65 73 73 69 6e 67 |ne in ad|dressing|
|00003950| 2e 0d 2a 29 0d 0d 3a 6d | 20 43 6f 6d 70 4c 69 74 |..*)..:m| CompLit|
|00003960| 3a 20 20 7b 20 5c 20 6c | 69 74 56 61 6c 20 2d 2d |: { \ l|itVal --|
|00003970| 20 7d 0d 0d 09 43 44 50 | 20 20 70 75 74 3a 20 6f | }...CDP| put: o|
|00003980| 70 43 44 50 0d 09 6c 69 | 74 3a 20 42 5f 6f 70 6e |pCDP..li|t: B_opn|
|00003990| 64 20 20 2d 3e 20 6c 69 | 74 56 61 6c 0d 09 0d 09 |d -> li|tVal....|
|000039a0| 6f 74 46 65 74 63 68 20 | 20 70 75 74 3a 20 6f 70 |otFetch | put: op|
|000039b0| 54 79 70 65 20 20 5c 20 | 6d 64 4c 69 74 20 20 70 |Type \ |mdLit p|
|000039c0| 75 74 3a 20 6d 6f 64 65 | 0d 09 30 20 20 3e 52 41 |ut: mode|..0 >RA|
|000039d0| 3a 20 69 6e 73 74 72 6e | 20 20 72 65 67 3a 20 6d |: instrn| reg: m|
|000039e0| 79 52 65 66 20 20 3e 52 | 44 3a 20 69 6e 73 74 72 |yRef >R|D: instr|
|000039f0| 6e 0d 09 6c 69 74 56 61 | 6c 20 74 72 75 65 20 31 |n..litVa|l true 1|
|00003a00| 36 62 69 74 73 3f 0d 09 | 49 46 09 3e 6c 69 74 3a |6bits?..|IF.>lit:|
|00003a10| 20 69 6e 73 74 72 6e 0d | 09 09 31 34 20 3e 70 72 | instrn.|..14 >pr|
|00003a20| 69 6d 4f 70 3a 20 69 6e | 73 74 72 6e 20 20 63 6f |imOp: in|strn co|
|00003a30| 6d 70 69 6c 65 3a 20 69 | 6e 73 74 72 6e 09 09 5c |mpile: i|nstrn..\|
|00003a40| 20 61 64 64 69 09 72 65 | 67 2c 20 30 2c 20 69 6d | addi.re|g, 0, im|
|00003a50| 6d 4c 6f 0d 09 45 4c 53 | 45 0d 09 09 31 36 20 3e |mLo..ELS|E...16 >|
|00003a60| 3e 20 20 3e 6c 69 74 3a | 20 69 6e 73 74 72 6e 0d |> >lit:| instrn.|
|00003a70| 09 09 31 35 20 3e 70 72 | 69 6d 4f 70 3a 20 69 6e |..15 >pr|imOp: in|
|00003a80| 73 74 72 6e 20 20 63 6f | 6d 70 69 6c 65 3a 20 69 |strn co|mpile: i|
|00003a90| 6e 73 74 72 6e 09 09 5c | 20 61 64 64 69 73 09 72 |nstrn..\| addis.r|
|00003aa0| 65 67 2c 20 30 2c 20 69 | 6d 6d 65 64 48 69 0d 09 |eg, 0, i|mmedHi..|
|00003ab0| 09 6c 69 74 56 61 6c 20 | 20 24 20 46 46 46 46 20 |.litVal | $ FFFF |
|00003ac0| 61 6e 64 20 20 3f 64 75 | 70 0d 09 09 49 46 09 3e |and ?du|p...IF.>|
|00003ad0| 6c 69 74 3a 20 69 6e 73 | 74 72 6e 0d 09 09 09 72 |lit: ins|trn....r|
|00003ae0| 65 67 3a 20 6d 79 52 65 | 66 20 20 3e 52 41 3a 20 |eg: myRe|f >RA: |
|00003af0| 69 6e 73 74 72 6e 0d 09 | 09 09 32 34 20 3e 70 72 |instrn..|..24 >pr|
|00003b00| 69 6d 4f 70 3a 20 69 6e | 73 74 72 6e 20 20 63 6f |imOp: in|strn co|
|00003b10| 6d 70 69 6c 65 3a 20 69 | 6e 73 74 72 6e 09 09 5c |mpile: i|nstrn..\|
|00003b20| 20 6f 72 69 09 72 65 67 | 2c 20 72 65 67 2c 20 69 | ori.reg|, reg, i|
|00003b30| 6d 6d 4c 6f 0d 09 09 09 | 38 20 70 75 74 3a 20 6c |mmLo....|8 put: l|
|00003b40| 65 6e 67 74 68 0d 09 09 | 54 48 45 4e 0d 09 54 48 |ength...|THEN..TH|
|00003b50| 45 4e 0d 3b 6d 0d 0d 0d | 28 2a 20 43 6f 6d 70 46 |EN.;m...|(* CompF|
|00003b60| 65 74 63 68 3a 20 63 6f | 6d 70 69 6c 65 73 20 61 |etch: co|mpiles a|
|00003b70| 20 66 65 74 63 68 2c 20 | 6f 66 20 63 6f 75 72 73 | fetch, |of cours|
|00003b80| 65 2e 20 20 54 68 65 72 | 65 20 61 72 65 20 61 20 |e. Ther|e are a |
|00003b90| 66 65 77 20 73 75 62 74 | 6c 65 74 69 65 73 2e 0d |few subt|leties..|
|00003ba0| 20 20 20 49 74 20 75 73 | 75 61 6c 6c 79 20 67 69 | It us|ually gi|
|00003bb0| 76 65 73 20 62 65 73 74 | 20 70 65 72 66 6f 72 6d |ves best| perform|
|00003bc0| 61 6e 63 65 20 69 66 20 | 77 65 20 73 63 68 65 64 |ance if |we sched|
|00003bd0| 75 6c 65 20 66 65 74 63 | 68 65 73 20 61 73 20 66 |ule fetc|hes as f|
|00003be0| 61 72 20 62 65 66 6f 72 | 65 0d 20 20 20 74 68 65 |ar befor|e. the|
|00003bf0| 20 6f 70 65 72 61 6e 64 | 20 69 73 20 6e 65 65 64 | operand| is need|
|00003c00| 65 64 20 61 73 20 77 65 | 20 63 61 6e 2e 20 20 4e |ed as we| can. N|
|00003c10| 6f 72 6d 61 6c 6c 79 20 | 77 65 20 74 72 79 20 74 |ormally |we try t|
|00003c20| 6f 20 68 6f 69 73 74 20 | 6f 70 65 72 61 74 69 6f |o hoist |operatio|
|00003c30| 6e 73 0d 20 20 20 6f 75 | 74 20 6f 66 20 6c 6f 6f |ns. ou|t of loo|
|00003c40| 70 73 2c 20 61 6e 64 20 | 66 6f 72 20 74 68 6f 73 |ps, and |for thos|
|00003c50| 65 2c 20 77 65 20 63 61 | 6e 27 74 20 68 6f 69 73 |e, we ca|n't hois|
|00003c60| 74 20 74 68 65 6d 20 75 | 6e 74 69 6c 20 74 68 65 |t them u|ntil the|
|00003c70| 20 65 6e 64 20 6f 66 20 | 74 68 65 0d 20 20 20 6c | end of |the. l|
|00003c80| 6f 6f 70 2c 20 73 69 6e | 63 65 20 77 65 20 6e 65 |oop, sin|ce we ne|
|00003c90| 65 64 20 74 6f 20 6b 6e | 6f 77 20 69 66 20 61 6e |ed to kn|ow if an|
|00003ca0| 79 20 6f 66 20 74 68 65 | 69 72 20 61 6e 74 65 63 |y of the|ir antec|
|00003cb0| 65 64 65 6e 74 20 6f 70 | 65 72 61 6e 64 73 20 63 |edent op|erands c|
|00003cc0| 68 61 6e 67 65 0d 20 20 | 20 69 6e 20 74 68 65 20 |hange. | in the |
|00003cd0| 6c 6f 6f 70 2e 20 20 41 | 6e 64 20 69 66 20 61 6e |loop. A|nd if an|
|00003ce0| 79 20 6f 66 20 74 68 65 | 20 61 6e 74 65 63 65 64 |y of the| anteced|
|00003cf0| 65 6e 74 73 20 61 72 65 | 20 66 72 6f 6d 20 6d 65 |ents are| from me|
|00003d00| 6d 6f 72 79 2c 20 77 65 | 20 63 61 6e 27 74 0d 20 |mory, we| can't. |
|00003d10| 20 20 68 6f 69 73 74 20 | 69 66 20 74 68 65 72 65 | hoist |if there|
|00003d20| 27 73 20 61 20 63 61 6c | 6c 20 74 6f 20 61 6e 6f |'s a cal|l to ano|
|00003d30| 74 68 65 72 20 64 65 66 | 6e 20 69 6e 20 74 68 65 |ther def|n in the|
|00003d40| 20 6c 6f 6f 70 20 73 69 | 6e 63 65 20 77 65 20 64 | loop si|nce we d|
|00003d50| 6f 6e 27 74 20 6b 6e 6f | 77 0d 20 20 20 77 68 61 |on't kno|w. wha|
|00003d60| 74 20 6d 61 79 20 68 61 | 76 65 20 68 61 70 70 65 |t may ha|ve happe|
|00003d70| 6e 65 64 20 74 68 65 72 | 65 2e 20 20 42 75 74 20 |ned ther|e. But |
|00003d80| 66 6f 72 20 28 6e 6f 6e | 2d 69 6e 64 65 78 65 64 |for (non|-indexed|
|00003d90| 29 20 66 65 74 63 68 65 | 73 2c 20 74 68 69 6e 67 |) fetche|s, thing|
|00003da0| 73 20 61 72 65 0d 20 20 | 20 73 69 6d 70 6c 65 72 |s are. | simpler|
|00003db0| 2e 20 20 54 68 65 20 6f | 6e 6c 79 20 61 6e 74 65 |. The o|nly ante|
|00003dc0| 63 65 64 65 6e 74 73 20 | 61 72 65 20 74 68 65 20 |cedents |are the |
|00003dd0| 62 61 73 65 20 72 65 67 | 73 20 77 68 69 63 68 20 |base reg|s which |
|00003de0| 6e 65 76 65 72 20 63 68 | 61 6e 67 65 20 64 75 72 |never ch|ange dur|
|00003df0| 69 6e 67 0d 20 20 20 61 | 20 64 65 66 69 6e 69 74 |ing. a| definit|
|00003e00| 69 6f 6e 2e 20 20 53 6f | 20 77 65 20 63 61 6e 20 |ion. So| we can |
|00003e10| 73 69 6d 70 6c 79 20 63 | 6f 6d 70 69 6c 65 20 74 |simply c|ompile t|
|00003e20| 68 65 20 66 65 74 63 68 | 20 61 73 20 65 61 72 6c |he fetch| as earl|
|00003e30| 79 20 61 73 20 70 6f 73 | 73 69 62 6c 65 2c 0d 20 |y as pos|sible,. |
|00003e40| 20 20 73 74 72 61 69 67 | 68 74 20 61 77 61 79 20 | straig|ht away |
|00003e50| 77 68 65 6e 20 77 65 20 | 65 6e 63 6f 75 6e 74 65 |when we |encounte|
|00003e60| 72 20 69 74 20 28 65 78 | 63 65 70 74 20 66 6f 72 |r it (ex|cept for|
|00003e70| 20 61 20 70 6f 73 73 69 | 62 6c 65 20 63 6f 6e 66 | a possi|ble conf|
|00003e80| 6c 69 63 74 69 6e 67 0d | 20 20 20 75 73 65 20 6f |licting.| use o|
|00003e90| 66 20 74 68 65 20 74 61 | 72 67 65 74 20 72 65 67 |f the ta|rget reg|
|00003ea0| 69 73 74 65 72 2e 20 20 | 4e 6f 74 65 20 74 68 61 |ister. |Note tha|
|00003eb0| 74 20 77 65 20 77 6f 6e | 27 74 20 62 65 20 61 62 |t we won|'t be ab|
|00003ec0| 6c 65 20 74 6f 20 64 6f | 20 74 68 69 73 0d 20 20 |le to do| this. |
|00003ed0| 20 66 6f 72 20 69 6e 64 | 65 78 65 64 20 66 65 74 | for ind|exed fet|
|00003ee0| 63 68 65 73 20 2d 20 77 | 65 27 6c 6c 20 68 61 76 |ches - w|e'll hav|
|00003ef0| 65 20 74 6f 20 74 72 65 | 61 74 20 74 68 65 6d 20 |e to tre|at them |
|00003f00| 74 68 65 20 73 61 6d 65 | 20 61 73 20 6e 6f 72 6d |the same| as norm|
|00003f10| 61 6c 0d 20 20 20 6f 70 | 65 72 61 74 69 6f 6e 73 |al. op|erations|
|00003f20| 2e 0d 2a 29 0d 0d 0d 3a | 6d 20 43 6f 6d 70 46 65 |..*)...:|m CompFe|
|00003f30| 74 63 68 4f 72 53 74 6f | 72 65 49 6e 73 74 3a 09 |tchOrSto|reInst:.|
|00003f40| 5c 20 28 20 6f 70 63 6f | 64 65 20 2d 2d 20 29 0d |\ ( opco|de -- ).|
|00003f50| 09 09 5c 20 4f 70 63 6f | 64 65 20 69 73 20 70 72 |..\ Opco|de is pr|
|00003f60| 69 6d 6f 70 20 69 66 20 | 62 61 73 65 2d 64 69 73 |imop if |base-dis|
|00003f70| 70 6c 2c 20 73 65 63 6f | 70 20 69 66 20 69 6e 64 |pl, seco|p if ind|
|00003f80| 65 78 65 64 20 28 69 6e | 20 77 68 69 63 68 0d 09 |exed (in| which..|
|00003f90| 09 5c 20 20 63 61 73 65 | 20 70 72 69 6d 6f 70 20 |.\ case| primop |
|00003fa0| 69 73 20 61 6c 77 61 79 | 73 20 33 31 29 0d 09 0d |is alway|s 31)...|
|00003fb0| 09 63 6c 65 61 72 3a 20 | 69 6e 73 74 72 6e 0d 09 |.clear: |instrn..|
|00003fc0| 72 65 66 54 79 70 65 3a | 20 6d 79 52 65 66 20 76 |refType:| myRef v|
|00003fd0| 72 52 65 66 20 3d 0d 09 | 49 46 20 20 76 65 63 54 |rRef =..|IF vecT|
|00003fe0| 79 70 65 20 20 45 4c 53 | 45 20 20 6c 6f 61 64 53 |ype ELS|E loadS|
|00003ff0| 74 6f 72 65 54 79 70 65 | 20 20 54 48 45 4e 20 20 |toreType| THEN |
|00004000| 3e 74 79 70 65 3a 20 69 | 6e 73 74 72 6e 0d 09 72 |>type: i|nstrn..r|
|00004010| 65 66 54 79 70 65 3a 20 | 42 5f 6f 70 6e 64 20 20 |efType: |B_opnd |
|00004020| 6c 69 74 52 65 66 20 3d | 0d 09 49 46 09 09 3e 70 |litRef =|..IF..>p|
|00004030| 72 69 6d 4f 70 3a 20 69 | 6e 73 74 72 6e 0d 09 09 |rimOp: i|nstrn...|
|00004040| 09 6c 69 74 3a 20 42 5f | 6f 70 6e 64 20 20 3e 6c |.lit: B_|opnd >l|
|00004050| 69 74 3a 20 69 6e 73 74 | 72 6e 0d 09 45 4c 53 45 |it: inst|rn..ELSE|
|00004060| 09 3e 73 65 63 4f 70 3a | 20 69 6e 73 74 72 6e 20 |.>secOp:| instrn |
|00004070| 20 33 31 20 3e 70 72 69 | 6d 4f 70 3a 20 69 6e 73 | 31 >pri|mOp: ins|
|00004080| 74 72 6e 0d 09 09 09 72 | 65 67 3a 20 42 5f 6f 70 |trn....r|eg: B_op|
|00004090| 6e 64 20 20 3e 72 42 3a | 20 69 6e 73 74 72 6e 0d |nd >rB:| instrn.|
|000040a0| 09 54 48 45 4e 0d 09 67 | 70 72 3a 20 41 5f 6f 70 |.THEN..g|pr: A_op|
|000040b0| 6e 64 20 20 3e 72 41 3a | 20 69 6e 73 74 72 6e 20 |nd >rA:| instrn |
|000040c0| 20 72 65 67 3a 20 6d 79 | 52 65 66 20 20 3e 52 44 | reg: my|Ref >RD|
|000040d0| 3a 20 69 6e 73 74 72 6e | 0d 09 63 6f 6d 70 69 6c |: instrn|..compil|
|000040e0| 65 3a 20 69 6e 73 74 72 | 6e 0d 3b 6d 0d 0d 0d 3a |e: instr|n.;m...:|
|000040f0| 6d 20 43 4f 4d 50 46 45 | 54 43 48 3a 20 20 7b 20 |m COMPFE|TCH: { |
|00004100| 5c 20 62 61 63 6b 43 44 | 50 20 73 76 43 44 50 20 |\ backCD|P svCDP |
|00004110| 62 61 63 6b 3f 20 69 6e | 64 65 78 65 64 3f 20 2d |back? in|dexed? -|
|00004120| 2d 20 7d 0d 0d 09 66 61 | 6c 73 65 20 2d 3e 20 62 |- }...fa|lse -> b|
|00004130| 61 63 6b 3f 0d 09 72 65 | 66 74 79 70 65 3a 20 41 |ack?..re|ftype: A|
|00004140| 5f 6f 70 6e 64 20 20 6e | 6f 52 65 66 20 3d 0d 09 |_opnd n|oRef =..|
|00004150| 49 46 20 20 63 6f 6d 70 | 4c 69 74 3a 20 73 65 6c |IF comp|Lit: sel|
|00004160| 66 20 20 45 58 49 54 20 | 20 54 48 45 4e 0d 0d 5c |f EXIT | THEN..\|
|00004170| 20 4e 6f 77 20 63 68 65 | 63 6b 20 69 66 20 69 74 | Now che|ck if it|
|00004180| 27 73 20 62 61 73 65 2d | 64 69 73 70 6c 20 6f 72 |'s base-|displ or|
|00004190| 20 69 6e 64 65 78 65 64 | 20 74 79 70 65 3a 0d 09 | indexed| type:..|
|000041a0| 72 65 66 54 79 70 65 3a | 20 42 5f 6f 70 6e 64 20 |refType:| B_opnd |
|000041b0| 20 47 50 52 72 65 66 20 | 3d 20 20 2d 3e 20 69 6e | GPRref |= -> in|
|000041c0| 64 65 78 65 64 3f 0d 09 | 0d 09 64 65 62 75 67 3f |dexed?..|..debug?|
|000041d0| 20 68 6f 69 73 74 54 65 | 73 74 3f 20 6f 72 20 69 | hoistTe|st? or i|
|000041e0| 66 0d 09 09 2e 22 20 63 | 6f 6d 70 69 6c 69 6e 67 |f...." c|ompiling|
|000041f0| 20 61 20 66 65 74 63 68 | 3a 22 20 20 70 72 69 6e | a fetch|:" prin|
|00004200| 74 3a 20 73 65 6c 66 20 | 63 72 20 63 72 0d 09 74 |t: self |cr cr..t|
|00004210| 68 65 6e 0d 0d 28 2a 09 | 4e 6f 77 20 77 65 20 6d |hen..(*.|Now we m|
|00004220| 6f 76 65 20 74 68 65 20 | 66 65 74 63 68 20 62 61 |ove the |fetch ba|
|00004230| 63 6b 20 61 73 20 66 61 | 72 20 61 73 20 70 6f 73 |ck as fa|r as pos|
|00004240| 73 69 62 6c 65 20 2d 20 | 74 68 65 20 63 6f 6e 64 |sible - |the cond|
|00004250| 69 74 69 6f 6e 73 20 61 | 72 65 0d 09 73 69 6d 69 |itions a|re..simi|
|00004260| 6c 61 72 20 74 6f 20 74 | 68 6f 73 65 20 66 6f 72 |lar to t|hose for|
|00004270| 20 68 6f 69 73 74 69 6e | 67 20 6f 74 68 65 72 20 | hoistin|g other |
|00004280| 6f 70 73 2e 20 20 53 65 | 65 20 3f 48 4f 49 53 54 |ops. Se|e ?HOIST|
|00004290| 3a 0d 0d 09 42 75 74 20 | 77 65 20 6d 75 73 74 6e |:...But |we mustn|
|000042a0| 27 74 20 68 6f 69 73 74 | 20 61 20 66 65 74 63 68 |'t hoist| a fetch|
|000042b0| 20 70 61 73 74 20 61 20 | 62 61 73 69 63 20 62 6c | past a |basic bl|
|000042c0| 6f 63 6b 20 62 6f 75 6e | 64 61 72 79 2e 20 20 46 |ock boun|dary. F|
|000042d0| 6f 72 20 63 6f 6d 70 75 | 74 65 64 0d 09 66 65 74 |or compu|ted..fet|
|000042e0| 63 68 65 73 2c 20 74 68 | 65 72 65 20 6d 69 67 68 |ches, th|ere migh|
|000042f0| 74 20 68 61 76 65 20 62 | 65 65 6e 20 61 20 63 6f |t have b|een a co|
|00004300| 6e 64 69 74 69 6f 6e 61 | 6c 2c 20 63 68 65 63 6b |nditiona|l, check|
|00004310| 69 6e 67 20 6f 6e 20 74 | 68 65 20 6c 65 67 61 6c |ing on t|he legal|
|00004320| 69 74 79 0d 09 6f 66 20 | 74 68 65 20 61 64 64 72 |ity..of |the addr|
|00004330| 65 73 73 20 77 65 27 72 | 65 20 75 73 69 6e 67 20 |ess we'r|e using |
|00004340| 66 6f 72 20 74 68 65 20 | 66 65 74 63 68 2e 20 20 |for the |fetch. |
|00004350| 45 76 65 6e 20 64 69 63 | 20 61 64 64 72 65 73 73 |Even dic| address|
|00004360| 65 73 20 61 72 65 6e 27 | 74 0d 09 73 61 66 65 2c |es aren'|t..safe,|
|00004370| 20 73 69 6e 63 65 20 61 | 20 27 66 72 65 65 27 20 | since a| 'free' |
|00004380| 72 65 67 20 6d 69 67 68 | 74 6e 27 74 20 62 65 20 |reg migh|tn't be |
|00004390| 66 72 65 65 20 62 65 66 | 6f 72 65 20 74 68 65 20 |free bef|ore the |
|000043a0| 42 42 20 62 6f 75 6e 64 | 61 72 79 2c 20 64 75 65 |BB bound|ary, due|
|000043b0| 0d 09 74 6f 20 61 6e 20 | 6f 75 74 73 74 61 6e 64 |..to an |outstand|
|000043c0| 69 6e 67 20 72 65 66 65 | 72 65 6e 63 65 20 69 6e |ing refe|rence in|
|000043d0| 20 74 68 65 20 6f 74 68 | 65 72 20 42 42 2e 20 20 | the oth|er BB. |
|000043e0| 49 66 20 77 65 20 68 61 | 76 65 2c 20 65 2e 67 2e |If we ha|ve, e.g.|
|000043f0| 0d 09 64 75 70 20 40 20 | 49 46 20 64 72 6f 70 20 |..dup @ |IF drop |
|00004400| 28 66 65 74 63 68 20 73 | 6f 6d 65 74 68 69 6e 67 |(fetch s|omething|
|00004410| 29 20 45 4c 53 45 20 28 | 75 73 65 20 61 64 64 72 |) ELSE (|use addr|
|00004420| 29 20 54 48 45 4e 0d 09 | 69 6e 20 74 68 65 20 66 |) THEN..|in the f|
|00004430| 69 72 73 74 20 42 42 20 | 77 65 20 73 65 65 20 74 |irst BB |we see t|
|00004440| 68 65 20 61 64 64 72 20 | 72 65 67 20 61 73 20 66 |he addr |reg as f|
|00004450| 72 65 65 20 28 73 69 6e | 63 65 20 69 74 20 77 61 |ree (sin|ce it wa|
|00004460| 73 0d 09 44 52 4f 50 70 | 65 64 29 2c 20 61 6e 64 |s..DROPp|ed), and|
|00004470| 20 73 6f 20 68 6f 69 73 | 74 20 74 68 65 20 66 65 | so hois|t the fe|
|00004480| 74 63 68 20 61 6e 64 20 | 63 6c 6f 62 62 65 72 20 |tch and |clobber |
|00004490| 69 74 2c 20 61 6c 74 68 | 6f 75 67 68 20 74 68 65 |it, alth|ough the|
|000044a0| 72 65 27 73 0d 09 73 74 | 69 6c 6c 20 61 6e 20 6f |re's..st|ill an o|
|000044b0| 75 74 73 74 61 6e 64 69 | 6e 67 20 72 65 66 65 72 |utstandi|ng refer|
|000044c0| 65 6e 63 65 20 69 6e 20 | 74 68 65 20 6f 74 68 65 |ence in |the othe|
|000044d0| 72 20 42 42 2c 20 77 68 | 69 63 68 20 61 74 20 74 |r BB, wh|ich at t|
|000044e0| 68 61 74 20 73 74 61 67 | 65 0d 09 77 65 20 64 6f |hat stag|e..we do|
|000044f0| 6e 27 74 20 6b 6e 6f 77 | 20 61 6e 79 74 68 69 6e |n't know| anythin|
|00004500| 67 20 61 62 6f 75 74 20 | 73 69 6e 63 65 20 77 65 |g about |since we|
|00004510| 20 68 61 76 65 6e 27 74 | 20 63 6f 6d 70 69 6c 65 | haven't| compile|
|00004520| 64 20 69 74 20 79 65 74 | 2e 20 20 54 68 69 73 20 |d it yet|. This |
|00004530| 0d 09 73 69 6d 70 6c 79 | 20 69 73 6e 27 74 20 77 |..simply| isn't w|
|00004540| 6f 72 74 68 20 64 6f 69 | 6e 67 20 61 6e 79 74 68 |orth doi|ng anyth|
|00004550| 69 6e 67 20 61 62 6f 75 | 74 2c 20 73 69 6e 63 65 |ing abou|t, since|
|00004560| 20 68 6f 69 73 74 69 6e | 67 20 74 68 65 73 65 20 | hoistin|g these |
|00004570| 66 65 74 63 68 65 73 0d | 09 77 6f 75 6c 64 6e 27 |fetches.|.wouldn'|
|00004580| 74 20 75 73 75 61 6c 6c | 79 20 67 61 69 6e 20 75 |t usuall|y gain u|
|00004590| 73 20 6d 75 63 68 20 69 | 66 20 61 6e 79 74 68 69 |s much i|f anythi|
|000045a0| 6e 67 2e 0d 09 0d 09 57 | 65 20 64 6f 20 74 72 79 |ng.....W|e do try|
|000045b0| 20 74 6f 20 68 6f 69 73 | 74 20 64 69 63 20 66 65 | to hois|t dic fe|
|000045c0| 74 63 68 65 73 20 6f 75 | 74 20 6f 66 20 6c 6f 6f |tches ou|t of loo|
|000045d0| 70 73 2c 20 77 68 69 63 | 68 20 69 73 20 6d 75 63 |ps, whic|h is muc|
|000045e0| 68 20 6d 6f 72 65 0d 09 | 69 6d 70 6f 72 74 61 6e |h more..|importan|
|000045f0| 74 2c 20 61 6e 64 20 66 | 6f 72 20 77 68 69 63 68 |t, and f|or which|
|00004600| 20 74 68 65 20 61 62 6f | 76 65 20 70 72 6f 62 6c | the abo|ve probl|
|00004610| 65 6d 20 63 61 6e 27 74 | 20 61 72 69 73 65 2e 20 |em can't| arise. |
|00004620| 20 42 75 74 20 77 65 20 | 68 61 6e 64 6c 65 0d 09 | But we |handle..|
|00004630| 74 68 61 74 20 61 74 20 | 3f 48 4f 49 53 54 3a 2c |that at |?HOIST:,|
|00004640| 20 6e 6f 74 20 68 65 72 | 65 2e 20 20 53 6f 20 77 | not her|e. So w|
|00004650| 65 20 62 61 69 6c 20 6f | 75 74 20 69 66 20 74 68 |e bail o|ut if th|
|00004660| 65 20 42 42 20 77 65 27 | 72 65 20 69 6e 20 69 73 |e BB we'|re in is|
|00004670| 20 61 20 6c 6f 6f 70 2e | 0d 09 28 48 6f 69 73 74 | a loop.|..(Hoist|
|00004680| 69 6e 67 20 68 65 72 65 | 20 69 6e 20 74 68 69 73 |ing here| in this|
|00004690| 20 73 69 74 75 61 74 69 | 6f 6e 20 77 6f 75 6c 64 | situati|on would|
|000046a0| 20 6d 65 73 73 20 74 68 | 65 20 42 42 20 62 6f 75 | mess th|e BB bou|
|000046b0| 6e 64 61 72 79 2c 20 61 | 6e 64 20 74 68 65 72 65 |ndary, a|nd there|
|000046c0| 27 73 0d 09 6e 6f 20 70 | 6f 69 6e 74 20 73 69 6e |'s..no p|oint sin|
|000046d0| 63 65 20 3f 48 4f 49 53 | 54 3a 20 74 61 6b 65 73 |ce ?HOIS|T: takes|
|000046e0| 20 63 61 72 65 20 6f 66 | 20 69 74 29 2e 0d 2a 29 | care of| it)..*)|
|000046f0| 0d 0d 09 62 61 73 69 63 | 5f 62 6c 6f 63 6b 5f 73 |...basic|_block_s|
|00004700| 74 61 72 74 20 20 2d 3e | 20 62 61 63 6b 43 44 50 |tart ->| backCDP|
|00004710| 0d 09 0d 09 68 6f 69 73 | 74 54 65 73 74 3f 20 69 |....hois|tTest? i|
|00004720| 66 0d 09 20 63 72 09 2e | 22 20 63 6f 6d 70 46 65 |f.. cr..|" compFe|
|00004730| 74 63 68 3a 20 63 68 65 | 63 6b 69 6e 67 20 66 6f |tch: che|cking fo|
|00004740| 72 20 61 20 68 6f 69 73 | 74 3a 22 20 70 72 69 6e |r a hois|t:" prin|
|00004750| 74 3a 20 73 65 6c 66 20 | 20 63 72 0d 09 09 2e 22 |t: self | cr...."|
|00004760| 20 43 44 50 20 20 20 20 | 20 20 20 20 20 20 20 20 | CDP | |
|00004770| 20 20 20 22 09 43 44 50 | 20 2e 68 20 63 72 0d 09 | ".CDP| .h cr..|
|00004780| 09 2e 22 20 62 61 63 6b | 43 44 50 20 20 20 20 20 |.." back|CDP |
|00004790| 20 20 20 20 20 20 22 09 | 62 61 63 6b 43 44 50 20 | ".|backCDP |
|000047a0| 2e 68 20 63 72 0d 09 09 | 2e 22 20 62 61 63 6b 73 |.h cr...|." backs|
|000047b0| 74 6f 70 5f 43 44 50 20 | 20 20 20 20 20 22 09 62 |top_CDP | ".b|
|000047c0| 61 63 6b 73 74 6f 70 5f | 43 44 50 20 2e 68 20 63 |ackstop_|CDP .h c|
|000047d0| 72 0d 09 09 2e 22 20 66 | 65 74 63 68 5f 62 61 63 |r...." f|etch_bac|
|000047e0| 6b 73 74 6f 70 20 20 20 | 20 22 09 66 65 74 63 68 |kstop | ".fetch|
|000047f0| 5f 62 61 63 6b 73 74 6f | 70 20 2e 68 20 63 72 0d |_backsto|p .h cr.|
|00004800| 09 09 2e 22 20 62 61 73 | 69 63 5f 62 6c 6f 63 6b |..." bas|ic_block|
|00004810| 5f 73 74 61 72 74 20 22 | 09 62 61 73 69 63 5f 62 |_start "|.basic_b|
|00004820| 6c 6f 63 6b 5f 73 74 61 | 72 74 20 2e 68 20 63 72 |lock_sta|rt .h cr|
|00004830| 0d 09 09 2e 22 20 72 65 | 71 64 5f 43 44 50 20 20 |...." re|qd_CDP |
|00004840| 20 20 20 20 20 20 20 20 | 22 09 72 65 71 64 5f 43 | |".reqd_C|
|00004850| 44 50 3a 20 73 65 6c 66 | 20 20 2e 68 20 63 72 0d |DP: self| .h cr.|
|00004860| 09 09 2e 22 20 68 6f 69 | 73 74 5f 66 65 74 63 68 |..." hoi|st_fetch|
|00004870| 65 73 3f 20 20 20 20 22 | 09 68 6f 69 73 74 5f 66 |es? "|.hoist_f|
|00004880| 65 74 63 68 65 73 3f 20 | 2e 20 63 72 0d 09 09 2e |etches? |. cr....|
|00004890| 22 20 64 6f 6e 74 48 6f | 69 73 74 3f 20 20 20 20 |" dontHo|ist? |
|000048a0| 20 20 20 20 22 09 67 65 | 74 3a 20 64 6f 6e 74 48 | ".ge|t: dontH|
|000048b0| 6f 69 73 74 3f 20 2e 20 | 63 72 0d 09 09 2e 22 20 |oist? . |cr...." |
|000048c0| 6c 6f 6f 70 5f 73 74 61 | 72 74 20 20 20 20 20 20 |loop_sta|rt |
|000048d0| 20 20 22 09 6c 6f 6f 70 | 5f 73 74 61 72 74 20 2e | ".loop|_start .|
|000048e0| 68 20 63 72 0d 09 09 2e | 22 20 72 65 63 6f 6d 70 |h cr....|" recomp|
|000048f0| 69 6c 69 6e 67 3f 20 20 | 20 20 20 20 22 09 72 65 |iling? | ".re|
|00004900| 63 6f 6d 70 69 6c 69 6e | 67 3f 20 2e 20 63 72 0d |compilin|g? . cr.|
|00004910| 09 74 68 65 6e 0d 0d 09 | 72 65 63 6f 6d 70 69 6c |.then...|recompil|
|00004920| 69 6e 67 3f 20 6e 6f 74 | 09 09 5c 20 69 66 20 77 |ing? not|..\ if w|
|00004930| 65 27 72 65 20 72 65 63 | 6f 6d 70 69 6c 69 6e 67 |e're rec|ompiling|
|00004940| 2c 20 77 65 27 76 65 20 | 61 6c 72 65 61 64 79 0d |, we've |already.|
|00004950| 09 09 09 09 09 09 09 5c | 20 20 73 65 74 20 43 44 |.......\| set CD|
|00004960| 50 20 74 6f 20 74 68 65 | 20 72 69 67 68 74 20 70 |P to the| right p|
|00004970| 6c 61 63 65 0d 09 67 65 | 74 3a 20 64 6f 6e 74 48 |lace..ge|t: dontH|
|00004980| 6f 69 73 74 3f 20 6e 6f | 74 20 61 6e 64 20 20 68 |oist? no|t and h|
|00004990| 6f 69 73 74 5f 66 65 74 | 63 68 65 73 3f 20 61 6e |oist_fet|ches? an|
|000049a0| 64 0d 09 6c 6f 6f 70 5f | 73 74 61 72 74 20 30 3d |d..loop_|start 0=|
|000049b0| 20 61 6e 64 0d 09 0d 5c | 20 4f 4b 20 74 6f 20 68 | and...\| OK to h|
|000049c0| 6f 69 73 74 20 73 6f 20 | 66 61 72 3f 0d 09 49 46 |oist so |far?..IF|
|000049d0| 09 09 09 09 09 09 09 09 | 5c 20 59 65 73 20 2d 20 |........|\ Yes - |
|000049e0| 6c 65 74 27 73 20 66 69 | 6e 64 20 77 68 65 72 65 |let's fi|nd where|
|000049f0| 20 74 6f 2e 2e 2e 0d 09 | 09 62 61 63 6b 43 44 50 | to.....|.backCDP|
|00004a00| 0d 09 09 62 61 63 6b 73 | 74 6f 70 5f 43 44 50 09 |...backs|top_CDP.|
|00004a10| 09 75 6d 61 78 09 5c 20 | 6d 75 73 74 6e 27 74 20 |.umax.\ |mustn't |
|00004a20| 68 6f 69 73 74 20 70 61 | 73 74 20 74 68 65 20 62 |hoist pa|st the b|
|00004a30| 61 63 6b 73 74 6f 70 0d | 09 09 66 65 74 63 68 5f |ackstop.|..fetch_|
|00004a40| 62 61 63 6b 73 74 6f 70 | 09 09 75 6d 61 78 09 5c |backstop|..umax.\|
|00004a50| 20 6f 72 20 74 68 65 20 | 66 65 74 63 68 20 62 61 | or the |fetch ba|
|00004a60| 63 6b 73 74 6f 70 0d 09 | 09 67 65 74 3a 20 6c 61 |ckstop..|.get: la|
|00004a70| 73 74 52 65 66 43 44 50 | 20 34 2b 09 75 6d 61 78 |stRefCDP| 4+.umax|
|00004a80| 09 5c 20 6f 72 20 70 61 | 73 74 20 74 68 65 20 6c |.\ or pa|st the l|
|00004a90| 61 73 74 20 72 65 66 20 | 74 6f 20 70 72 65 76 20 |ast ref |to prev |
|00004aa0| 76 61 6c 75 65 20 69 6e | 20 74 68 69 73 20 72 65 |value in| this re|
|00004ab0| 67 0d 09 09 72 65 71 64 | 5f 43 44 50 3a 20 73 65 |g...reqd|_CDP: se|
|00004ac0| 6c 66 20 20 28 20 34 2b | 20 29 09 75 6d 61 78 09 |lf ( 4+| ).umax.|
|00004ad0| 5c 20 6f 72 20 70 61 73 | 74 20 77 68 65 72 65 20 |\ or pas|t where |
|00004ae0| 61 6e 79 20 61 6e 74 65 | 63 65 64 65 6e 74 73 20 |any ante|cedents |
|00004af0| 61 72 65 20 67 65 6e 65 | 72 61 74 65 64 0d 09 09 |are gene|rated...|
|00004b00| 09 09 09 09 09 09 09 09 | 09 5c 20 26 26 26 26 0d |........|.\ &&&&.|
|00004b10| 09 09 67 65 74 3a 20 6f | 70 43 44 50 20 34 2b 09 |..get: o|pCDP 4+.|
|00004b20| 09 75 6d 61 78 09 5c 20 | 6f 72 20 70 61 73 74 20 |.umax.\ |or past |
|00004b30| 70 72 65 76 20 6f 70 20 | 63 68 61 6e 67 69 6e 67 |prev op |changing|
|00004b40| 20 74 68 69 73 20 72 65 | 67 0d 09 09 6f 75 74 5f | this re|g...out_|
|00004b50| 6f 66 5f 65 71 5f 72 61 | 6e 67 65 09 09 09 09 5c |of_eq_ra|nge....\|
|00004b60| 20 6f 72 20 69 6e 74 6f | 20 61 6e 20 65 71 75 61 | or into| an equa|
|00004b70| 6c 69 7a 61 74 69 6f 6e | 20 73 65 71 75 65 6e 63 |lization| sequenc|
|00004b80| 65 0d 09 09 09 09 09 09 | 09 09 09 0d 09 09 2d 3e |e.......|......->|
|00004b90| 20 62 61 63 6b 43 44 50 | 0d 0d 09 09 43 44 50 20 | backCDP|....CDP |
|00004ba0| 62 61 63 6b 43 44 50 20 | 75 3e 3d 0d 09 09 49 46 |backCDP |u>=...IF|
|00004bb0| 09 74 72 75 65 20 2d 3e | 20 62 61 63 6b 3f 0d 09 |.true ->| back?..|
|00004bc0| 09 09 67 65 74 3a 20 6c | 65 6e 20 20 31 20 3d 0d |..get: l|en 1 =.|
|00004bd0| 09 09 09 49 46 09 67 65 | 74 3a 20 66 6c 61 67 73 |...IF.ge|t: flags|
|00004be0| 20 20 66 62 45 78 74 20 | 61 6e 64 0d 09 09 09 09 | fbExt |and.....|
|00004bf0| 49 46 09 38 20 70 75 74 | 3a 20 6c 65 6e 67 74 68 |IF.8 put|: length|
|00004c00| 0d 09 09 09 09 54 48 45 | 4e 0d 09 09 09 54 48 45 |.....THE|N....THE|
|00004c10| 4e 0d 0d 09 09 09 62 61 | 63 6b 43 44 50 20 70 75 |N.....ba|ckCDP pu|
|00004c20| 74 3a 20 6f 70 43 44 50 | 0d 09 09 09 69 6e 73 65 |t: opCDP|....inse|
|00004c30| 72 74 3a 20 73 65 6c 66 | 0d 0d 09 09 09 43 44 50 |rt: self|.....CDP|
|00004c40| 20 2d 3e 20 73 76 43 44 | 50 0d 09 09 09 62 61 63 | -> svCD|P....bac|
|00004c50| 6b 43 44 50 20 20 2d 3e | 20 43 44 50 0d 09 09 09 |kCDP ->| CDP....|
|00004c60| 0d 09 5c 20 6e 6f 77 20 | 69 66 20 77 65 20 68 6f |..\ now |if we ho|
|00004c70| 69 73 74 65 64 20 69 74 | 20 72 69 67 68 74 20 62 |isted it| right b|
|00004c80| 61 63 6b 20 74 6f 20 62 | 61 63 6b 73 74 6f 70 5f |ack to b|ackstop_|
|00004c90| 43 44 50 2c 20 77 65 20 | 6d 6f 76 65 20 62 61 63 |CDP, we |move bac|
|00004ca0| 6b 73 74 6f 70 5f 43 44 | 50 0d 09 5c 20 20 70 61 |kstop_CD|P..\ pa|
|00004cb0| 73 74 20 74 68 65 20 69 | 6e 73 74 72 75 63 74 69 |st the i|nstructi|
|00004cc0| 6f 6e 20 73 6f 20 68 6f | 69 73 74 65 64 20 66 65 |on so ho|isted fe|
|00004cd0| 74 63 68 65 73 20 73 74 | 61 79 20 69 6e 20 6f 72 |tches st|ay in or|
|00004ce0| 64 65 72 2e 20 20 4e 6f | 20 62 69 67 0d 09 5c 20 |der. No| big..\ |
|00004cf0| 20 64 65 61 6c 2c 20 62 | 75 74 20 6d 69 67 68 74 | deal, b|ut might|
|00004d00| 20 68 65 6c 70 20 61 76 | 6f 69 64 20 61 20 73 74 | help av|oid a st|
|00004d10| 61 6c 6c 2e 0d 09 0d 09 | 09 09 62 61 63 6b 43 44 |all.....|..backCD|
|00004d20| 50 20 62 61 63 6b 73 74 | 6f 70 5f 43 44 50 20 3d |P backst|op_CDP =|
|00004d30| 0d 09 09 09 49 46 09 67 | 65 74 3a 20 6c 65 6e 67 |....IF.g|et: leng|
|00004d40| 74 68 20 2b 2b 3e 20 62 | 61 63 6b 73 74 6f 70 5f |th ++> b|ackstop_|
|00004d50| 43 44 50 20 20 54 48 45 | 4e 0d 09 09 54 48 45 4e |CDP THE|N...THEN|
|00004d60| 0d 09 54 48 45 4e 0d 0d | 09 68 6f 69 73 74 54 65 |..THEN..|.hoistTe|
|00004d70| 73 74 3f 20 69 66 0d 09 | 09 62 61 63 6b 3f 20 69 |st? if..|.back? i|
|00004d80| 66 20 20 2e 22 20 63 61 | 6e 20 68 6f 69 73 74 20 |f ." ca|n hoist |
|00004d90| 66 65 74 63 68 2c 20 74 | 6f 20 22 20 62 61 63 6b |fetch, t|o " back|
|00004da0| 43 44 50 20 2e 68 0d 09 | 09 09 65 6c 73 65 20 20 |CDP .h..|..else |
|00004db0| 2e 22 20 63 61 6e 27 74 | 20 68 6f 69 73 74 20 66 |." can't| hoist f|
|00004dc0| 65 74 63 68 20 2d 20 75 | 73 69 6e 67 20 63 75 72 |etch - u|sing cur|
|00004dd0| 72 20 43 44 50 20 22 20 | 43 44 50 20 2e 68 0d 09 |r CDP " |CDP .h..|
|00004de0| 09 09 74 68 65 6e 20 63 | 72 20 63 72 0d 09 74 68 |..then c|r cr..th|
|00004df0| 65 6e 0d 0d 09 43 44 50 | 20 20 70 75 74 3a 20 6f |en...CDP| put: o|
|00004e00| 70 43 44 50 0d 09 43 44 | 50 20 20 6d 61 72 6b 5f |pCDP..CD|P mark_|
|00004e10| 75 73 65 3a 20 41 5f 6f | 70 6e 64 0d 09 43 44 50 |use: A_o|pnd..CDP|
|00004e20| 20 20 6d 61 72 6b 5f 75 | 73 65 3a 20 42 5f 6f 70 | mark_u|se: B_op|
|00004e30| 6e 64 09 09 5c 20 77 69 | 6c 6c 20 64 6f 20 6e 6f |nd..\ wi|ll do no|
|00004e40| 74 68 69 6e 67 20 69 66 | 20 6e 6f 74 20 61 20 72 |thing if| not a r|
|00004e50| 65 67 0d 0d 09 72 65 66 | 54 79 70 65 3a 20 6d 79 |eg...ref|Type: my|
|00004e60| 52 65 66 0d 09 43 41 53 | 45 5b 09 46 50 52 72 65 |Ref..CAS|E[.FPRre|
|00004e70| 66 09 5d 3d 3e 09 09 09 | 5c 20 66 6c 6f 61 74 69 |f.]=>...|\ floati|
|00004e80| 6e 67 20 70 6f 69 6e 74 | 20 66 65 74 63 68 0d 09 |ng point| fetch..|
|00004e90| 09 09 09 67 65 74 3a 20 | 6c 65 6e 20 20 38 20 3d |...get: |len 8 =|
|00004ea0| 0d 09 09 09 09 49 46 09 | 09 5c 20 6c 65 6e 67 74 |.....IF.|.\ lengt|
|00004eb0| 68 20 3d 20 64 6f 75 62 | 6c 65 0d 09 09 09 09 09 |h = doub|le......|
|00004ec0| 69 6e 64 65 78 65 64 3f | 20 49 46 20 20 35 39 39 |indexed?| IF 599|
|00004ed0| 20 28 20 6c 66 64 78 20 | 29 20 20 45 4c 53 45 20 | ( lfdx |) ELSE |
|00004ee0| 20 35 30 20 28 20 6c 66 | 64 20 29 20 20 54 48 45 | 50 ( lf|d ) THE|
|00004ef0| 4e 0d 09 09 09 09 45 4c | 53 45 09 5c 20 61 73 73 |N.....EL|SE.\ ass|
|00004f00| 75 6d 65 20 6c 65 6e 67 | 74 68 20 3d 20 73 69 6e |ume leng|th = sin|
|00004f10| 67 6c 65 0d 09 09 09 09 | 09 69 6e 64 65 78 65 64 |gle.....|.indexed|
|00004f20| 3f 20 49 46 20 20 35 33 | 35 20 28 20 6c 66 73 78 |? IF 53|5 ( lfsx|
|00004f30| 20 29 20 20 45 4c 53 45 | 20 20 34 38 20 28 20 6c | ) ELSE| 48 ( l|
|00004f40| 66 73 20 29 20 20 54 48 | 45 4e 0d 09 09 09 09 54 |fs ) TH|EN.....T|
|00004f50| 48 45 4e 0d 09 09 09 09 | 63 6f 6d 70 46 65 74 63 |HEN.....|compFetc|
|00004f60| 68 4f 72 53 74 6f 72 65 | 49 6e 73 74 3a 20 73 65 |hOrStore|Inst: se|
|00004f70| 6c 66 0d 0d 09 09 5b 09 | 47 50 52 72 65 66 09 5d |lf....[.|GPRref.]|
|00004f80| 3d 3e 09 09 09 5c 20 69 | 6e 74 65 67 65 72 20 66 |=>...\ i|nteger f|
|00004f90| 65 74 63 68 0d 0d 09 09 | 09 09 67 65 74 3a 20 6c |etch....|..get: l|
|00004fa0| 65 6e 0d 09 09 09 09 53 | 45 4c 45 43 54 5b 20 31 |en.....S|ELECT[ 1|
|00004fb0| 20 5d 3d 3e 0d 09 09 09 | 09 09 09 69 6e 64 65 78 | ]=>....|...index|
|00004fc0| 65 64 3f 20 49 46 20 20 | 38 37 20 28 20 6c 62 7a |ed? IF |87 ( lbz|
|00004fd0| 78 20 29 20 20 45 4c 53 | 45 20 20 33 34 20 28 20 |x ) ELS|E 34 ( |
|00004fe0| 6c 62 7a 20 29 20 20 54 | 48 45 4e 0d 09 09 09 09 |lbz ) T|HEN.....|
|00004ff0| 09 09 63 6f 6d 70 46 65 | 74 63 68 4f 72 53 74 6f |..compFe|tchOrSto|
|00005000| 72 65 49 6e 73 74 3a 20 | 73 65 6c 66 0d 09 09 09 |reInst: |self....|
|00005010| 09 09 09 67 65 74 3a 20 | 66 6c 61 67 73 20 20 66 |...get: |flags f|
|00005020| 62 45 78 74 20 61 6e 64 | 0d 09 09 09 09 09 09 49 |bExt and|.......I|
|00005030| 46 09 09 5c 20 77 65 20 | 68 61 76 65 20 74 6f 20 |F..\ we |have to |
|00005040| 73 69 67 6e 2d 65 78 74 | 65 6e 64 20 2d 20 74 68 |sign-ext|end - th|
|00005050| 65 72 65 27 73 20 6e 6f | 0d 09 09 09 09 09 09 09 |ere's no|........|
|00005060| 09 5c 20 20 22 6c 6f 61 | 64 20 62 79 74 65 20 61 |.\ "loa|d byte a|
|00005070| 6c 67 65 62 72 61 69 63 | 22 20 69 6e 73 74 72 6e |lgebraic|" instrn|
|00005080| 2c 20 73 6f 20 77 65 0d | 09 09 09 09 09 09 09 09 |, so we.|........|
|00005090| 5c 20 20 63 6f 6d 70 69 | 6c 65 20 61 6e 20 22 65 |\ compi|le an "e|
|000050a0| 78 74 65 6e 64 20 73 69 | 67 6e 20 62 79 74 65 22 |xtend si|gn byte"|
|000050b0| 20 68 65 72 65 2e 0d 09 | 0d 09 09 09 09 09 09 09 | here...|........|
|000050c0| 63 6c 65 61 72 3a 20 69 | 6e 73 74 72 6e 0d 09 09 |clear: i|nstrn...|
|000050d0| 09 09 09 09 09 72 65 67 | 3a 20 6d 79 52 65 66 20 |.....reg|: myRef |
|000050e0| 20 64 75 70 20 3e 52 41 | 3a 20 69 6e 73 74 72 6e | dup >RA|: instrn|
|000050f0| 20 20 3e 52 44 3a 20 69 | 6e 73 74 72 6e 0d 09 09 | >RD: i|nstrn...|
|00005100| 09 09 09 09 09 33 31 20 | 3e 70 72 69 6d 4f 70 3a |.....31 |>primOp:|
|00005110| 20 69 6e 73 74 72 6e 20 | 20 39 35 34 20 3e 73 65 | instrn | 954 >se|
|00005120| 63 4f 70 3a 20 69 6e 73 | 74 72 6e 09 09 5c 20 65 |cOp: ins|trn..\ e|
|00005130| 78 74 73 62 0d 09 09 09 | 09 09 09 09 6c 6f 67 69 |xtsb....|....logi|
|00005140| 63 61 6c 54 79 70 65 20 | 3e 74 79 70 65 3a 20 69 |calType |>type: i|
|00005150| 6e 73 74 72 6e 0d 09 09 | 09 09 09 09 09 63 6f 6d |nstrn...|.....com|
|00005160| 70 69 6c 65 3a 20 69 6e | 73 74 72 6e 0d 09 09 09 |pile: in|strn....|
|00005170| 09 09 09 09 38 20 70 75 | 74 3a 20 6c 65 6e 67 74 |....8 pu|t: lengt|
|00005180| 68 0d 09 09 09 09 09 09 | 54 48 45 4e 0d 09 09 0d |h.......|THEN....|
|00005190| 09 09 09 20 09 5b 20 32 | 20 5d 3d 3e 09 69 6e 64 |... .[ 2| ]=>.ind|
|000051a0| 65 78 65 64 3f 0d 09 09 | 09 20 20 09 09 09 49 46 |exed?...|. ...IF|
|000051b0| 09 67 65 74 3a 20 66 6c | 61 67 73 20 20 66 62 45 |.get: fl|ags fbE|
|000051c0| 78 74 20 61 6e 64 0d 09 | 09 09 20 20 09 09 09 09 |xt and..|.. ....|
|000051d0| 49 46 20 20 33 34 33 20 | 28 20 6c 68 61 78 20 29 |IF 343 |( lhax )|
|000051e0| 20 20 45 4c 53 45 20 20 | 32 37 39 20 28 20 6c 68 | ELSE |279 ( lh|
|000051f0| 7a 78 20 29 20 20 54 48 | 45 4e 0d 09 09 09 20 20 |zx ) TH|EN.... |
|00005200| 09 09 09 45 4c 53 45 0d | 09 09 09 20 20 09 09 09 |...ELSE.|... ...|
|00005210| 09 67 65 74 3a 20 66 6c | 61 67 73 20 20 66 62 45 |.get: fl|ags fbE|
|00005220| 78 74 20 61 6e 64 0d 09 | 09 09 20 20 09 09 09 09 |xt and..|.. ....|
|00005230| 49 46 20 20 34 32 20 28 | 20 6c 68 61 20 29 20 20 |IF 42 (| lha ) |
|00005240| 45 4c 53 45 20 20 34 30 | 20 28 20 6c 68 7a 20 29 |ELSE 40| ( lhz )|
|00005250| 20 20 54 48 45 4e 0d 09 | 09 09 20 20 09 09 09 54 | THEN..|.. ...T|
|00005260| 48 45 4e 0d 09 09 09 20 | 20 09 09 09 63 6f 6d 70 |HEN.... | ...comp|
|00005270| 46 65 74 63 68 4f 72 53 | 74 6f 72 65 49 6e 73 74 |FetchOrS|toreInst|
|00005280| 3a 20 73 65 6c 66 0d 09 | 09 20 20 09 09 09 09 0d |: self..|. .....|
|00005290| 09 09 09 09 5b 20 34 20 | 5d 3d 3e 09 36 34 62 69 |....[ 4 |]=>.64bi|
|000052a0| 74 3f 0d 09 09 09 20 20 | 09 09 09 49 46 09 69 6e |t?.... |...IF.in|
|000052b0| 64 65 78 65 64 3f 0d 09 | 09 09 20 20 09 09 09 09 |dexed?..|.. ....|
|000052c0| 49 46 09 67 65 74 3a 20 | 66 6c 61 67 73 20 20 66 |IF.get: |flags f|
|000052d0| 62 45 78 74 20 61 6e 64 | 0d 09 09 09 20 20 09 09 |bExt and|.... ..|
|000052e0| 09 09 09 49 46 20 20 33 | 34 31 20 28 20 6c 77 61 |...IF 3|41 ( lwa|
|000052f0| 78 20 29 20 20 45 4c 53 | 45 20 20 32 33 20 28 20 |x ) ELS|E 23 ( |
|00005300| 6c 77 7a 78 20 29 20 20 | 54 48 45 4e 0d 09 09 09 |lwzx ) |THEN....|
|00005310| 20 20 09 09 09 09 45 4c | 53 45 0d 09 09 09 20 20 | ....EL|SE.... |
|00005320| 09 09 09 09 09 67 65 74 | 3a 20 66 6c 61 67 73 20 |.....get|: flags |
|00005330| 20 66 62 45 78 74 20 61 | 6e 64 0d 09 09 09 20 20 | fbExt a|nd.... |
|00005340| 09 09 09 09 09 49 46 20 | 20 35 38 20 28 20 6c 77 |.....IF | 58 ( lw|
|00005350| 61 20 29 20 20 45 4c 53 | 45 20 20 33 32 20 28 20 |a ) ELS|E 32 ( |
|00005360| 6c 77 7a 20 29 20 20 54 | 48 45 4e 0d 09 09 09 20 |lwz ) T|HEN.... |
|00005370| 20 09 09 09 09 54 48 45 | 4e 0d 09 09 09 20 20 09 | ....THE|N.... .|
|00005380| 09 09 45 4c 53 45 0d 09 | 09 09 20 20 09 09 09 09 |..ELSE..|.. ....|
|00005390| 69 6e 64 65 78 65 64 3f | 0d 09 09 09 20 20 09 09 |indexed?|.... ..|
|000053a0| 09 09 49 46 20 20 32 33 | 20 28 20 6c 77 7a 78 20 |..IF 23| ( lwzx |
|000053b0| 29 20 20 45 4c 53 45 20 | 20 33 32 20 28 20 6c 77 |) ELSE | 32 ( lw|
|000053c0| 7a 20 29 20 20 54 48 45 | 4e 0d 09 09 09 20 20 09 |z ) THE|N.... .|
|000053d0| 09 09 54 48 45 4e 0d 09 | 09 09 20 20 09 09 09 63 |..THEN..|.. ...c|
|000053e0| 6f 6d 70 46 65 74 63 68 | 4f 72 53 74 6f 72 65 49 |ompFetch|OrStoreI|
|000053f0| 6e 73 74 3a 20 73 65 6c | 66 0d 09 09 09 20 20 09 |nst: sel|f.... .|
|00005400| 09 09 09 0d 09 09 09 09 | 5b 20 38 20 5d 3d 3e 09 |........|[ 8 ]=>.|
|00005410| 69 6e 64 65 78 65 64 3f | 0d 09 09 09 20 20 09 09 |indexed?|.... ..|
|00005420| 09 49 46 20 20 32 31 20 | 28 20 6c 64 78 20 29 20 |.IF 21 |( ldx ) |
|00005430| 20 45 4c 53 45 20 20 35 | 38 20 28 20 6c 64 20 29 | ELSE 5|8 ( ld )|
|00005440| 20 20 54 48 45 4e 0d 09 | 09 09 20 20 09 09 09 63 | THEN..|.. ...c|
|00005450| 6f 6d 70 46 65 74 63 68 | 4f 72 53 74 6f 72 65 49 |ompFetch|OrStoreI|
|00005460| 6e 73 74 3a 20 73 65 6c | 66 0d 0d 09 09 09 09 44 |nst: sel|f......D|
|00005470| 45 46 41 55 4c 54 3d 3e | 20 2e 22 20 69 6c 6c 65 |EFAULT=>| ." ille|
|00005480| 67 61 6c 20 6c 65 6e 20 | 69 6e 20 43 6f 6d 70 46 |gal len |in CompF|
|00005490| 65 74 63 68 3a 22 20 51 | 55 49 54 0d 09 09 09 20 |etch:" Q|UIT.... |
|000054a0| 20 0d 09 09 09 09 5d 53 | 45 4c 45 43 54 0d 0d 09 | .....]S|ELECT...|
|000054b0| 09 5b 09 56 52 72 65 66 | 09 5d 3d 3e 09 09 09 5c |.[.VRref|.]=>...\|
|000054c0| 20 76 65 63 74 6f 72 20 | 66 65 74 63 68 20 2d 20 | vector |fetch - |
|000054d0| 74 68 65 73 65 20 61 72 | 65 20 61 6c 77 61 79 73 |these ar|e always|
|000054e0| 20 69 6e 64 65 78 65 64 | 0d 09 09 09 09 69 6e 64 | indexed|.....ind|
|000054f0| 65 78 65 64 3f 0d 09 09 | 09 09 4e 49 46 09 09 5c |exed?...|..NIF..\|
|00005500| 20 6f 6e 6c 79 20 6c 65 | 67 61 6c 20 69 66 20 6c | only le|gal if l|
|00005510| 69 74 20 76 61 6c 75 65 | 20 69 73 20 7a 65 72 6f |it value| is zero|
|00005520| 2e 20 20 49 6e 20 74 68 | 69 73 20 63 61 73 65 0d |. In th|is case.|
|00005530| 09 09 09 09 09 09 5c 20 | 20 77 65 20 6d 75 73 74 |......\ | we must|
|00005540| 20 70 75 74 20 30 20 61 | 73 20 74 68 65 20 41 20 | put 0 a|s the A |
|00005550| 6f 70 65 72 61 6e 64 2c | 20 61 6e 64 20 74 68 69 |operand,| and thi|
|00005560| 73 20 6d 65 61 6e 73 20 | 0d 09 09 09 09 09 09 5c |s means |.......\|
|00005570| 20 20 74 68 65 20 70 72 | 65 76 69 6f 75 73 20 41 | the pr|evious A|
|00005580| 20 6f 70 65 72 61 6e 64 | 20 62 65 63 6f 6d 65 73 | operand| becomes|
|00005590| 20 74 68 65 20 42 20 6f | 70 65 72 61 6e 64 2e 0d | the B o|perand..|
|000055a0| 09 09 09 09 09 41 53 53 | 45 52 54 7b 20 6c 69 74 |.....ASS|ERT{ lit|
|000055b0| 3a 20 42 5f 6f 70 6e 64 | 20 30 3d 20 7d 0d 09 09 |: B_opnd| 0= }...|
|000055c0| 09 09 09 67 70 72 3a 20 | 41 5f 6f 70 6e 64 20 20 |...gpr: |A_opnd |
|000055d0| 3e 67 70 72 3a 20 42 5f | 6f 70 6e 64 0d 09 09 09 |>gpr: B_|opnd....|
|000055e0| 09 09 30 20 3e 67 70 72 | 3a 20 41 5f 6f 70 6e 64 |..0 >gpr|: A_opnd|
|000055f0| 0d 09 09 09 09 54 48 45 | 4e 0d 09 09 09 09 31 30 |.....THE|N.....10|
|00005600| 33 20 28 20 6c 76 78 20 | 29 20 20 63 6f 6d 70 46 |3 ( lvx |) compF|
|00005610| 65 74 63 68 4f 72 53 74 | 6f 72 65 49 6e 73 74 3a |etchOrSt|oreInst:|
|00005620| 20 73 65 6c 66 0d 0d 09 | 09 44 45 46 41 55 4c 54 | self...|.DEFAULT|
|00005630| 3d 3e 09 2e 22 20 69 6c | 6c 65 67 61 6c 20 72 65 |=>.." il|legal re|
|00005640| 66 74 79 70 65 20 66 6f | 72 20 66 65 74 63 68 22 |ftype fo|r fetch"|
|00005650| 20 31 20 64 69 65 0d 09 | 5d 43 41 53 45 0d 0d 09 | 1 die..|]CASE...|
|00005660| 62 61 63 6b 3f 20 49 46 | 20 20 73 76 43 44 50 20 |back? IF| svCDP |
|00005670| 2d 3e 20 43 44 50 20 20 | 54 48 45 4e 0d 3b 6d 0d |-> CDP |THEN.;m.|
|00005680| 0d 0d 3a 6d 20 43 4f 4d | 50 53 54 4f 52 45 3a 20 |..:m COM|PSTORE: |
|00005690| 20 7b 20 5c 20 69 6e 64 | 65 78 65 64 3f 20 2d 2d | { \ ind|exed? --|
|000056a0| 20 7d 0d 09 09 5c 20 6e | 6f 74 65 20 77 65 20 6e | }...\ n|ote we n|
|000056b0| 65 76 65 72 20 74 72 79 | 20 74 6f 20 6d 6f 76 65 |ever try| to move|
|000056c0| 20 74 68 65 73 65 20 62 | 61 63 6b 2c 20 77 68 69 | these b|ack, whi|
|000056d0| 63 68 20 77 6f 75 6c 64 | 20 62 65 20 70 72 65 74 |ch would| be pret|
|000056e0| 74 79 20 73 69 6c 6c 79 | 21 0d 0d 09 64 65 62 75 |ty silly|!...debu|
|000056f0| 67 3f 20 69 66 20 2e 22 | 20 63 6f 6d 70 69 6c 69 |g? if ."| compili|
|00005700| 6e 67 20 61 20 73 74 6f | 72 65 22 20 63 72 20 74 |ng a sto|re" cr t|
|00005710| 68 65 6e 0d 09 0d 5c 20 | 63 68 65 63 6b 20 69 66 |hen...\ |check if|
|00005720| 20 69 74 27 73 20 62 61 | 73 65 2d 64 69 73 70 6c | it's ba|se-displ|
|00005730| 20 6f 72 20 69 6e 64 65 | 78 65 64 20 74 79 70 65 | or inde|xed type|
|00005740| 3a 0d 09 72 65 66 54 79 | 70 65 3a 20 42 5f 6f 70 |:..refTy|pe: B_op|
|00005750| 6e 64 20 20 47 50 52 72 | 65 66 20 3d 20 20 2d 3e |nd GPRr|ef = ->|
|00005760| 20 69 6e 64 65 78 65 64 | 3f 0d 0d 09 72 65 66 54 | indexed|?...refT|
|00005770| 79 70 65 3a 20 6d 79 52 | 65 66 0d 0d 09 43 41 53 |ype: myR|ef...CAS|
|00005780| 45 5b 09 46 50 52 72 65 | 66 09 5d 3d 3e 09 09 09 |E[.FPRre|f.]=>...|
|00005790| 5c 20 66 6c 6f 61 74 69 | 6e 67 20 70 6f 69 6e 74 |\ floati|ng point|
|000057a0| 20 73 74 6f 72 65 0d 0d | 09 09 09 09 67 65 74 3a | store..|....get:|
|000057b0| 20 6c 65 6e 20 20 38 20 | 3d 0d 09 09 09 09 49 46 | len 8 |=.....IF|
|000057c0| 09 09 5c 20 6c 65 6e 67 | 74 68 20 3d 20 64 6f 75 |..\ leng|th = dou|
|000057d0| 62 6c 65 0d 09 09 09 09 | 09 69 6e 64 65 78 65 64 |ble.....|.indexed|
|000057e0| 3f 20 49 46 20 20 37 32 | 37 20 28 20 73 74 66 64 |? IF 72|7 ( stfd|
|000057f0| 78 20 29 20 20 45 4c 53 | 45 20 20 35 34 20 28 20 |x ) ELS|E 54 ( |
|00005800| 73 74 66 64 20 29 20 20 | 54 48 45 4e 0d 09 09 0d |stfd ) |THEN....|
|00005810| 09 09 09 09 45 4c 53 45 | 09 5c 20 61 73 73 75 6d |....ELSE|.\ assum|
|00005820| 65 20 6c 65 6e 67 74 68 | 20 3d 20 73 69 6e 67 6c |e length| = singl|
|00005830| 65 2e 20 20 46 69 72 73 | 74 20 77 65 20 63 6f 6d |e. Firs|t we com|
|00005840| 70 69 6c 65 20 61 20 66 | 72 73 70 0d 09 09 09 09 |pile a f|rsp.....|
|00005850| 09 09 5c 20 20 69 6e 73 | 74 72 75 63 74 69 6f 6e |..\ ins|truction|
|00005860| 20 74 6f 20 6d 61 6b 65 | 20 73 75 72 65 20 69 74 | to make| sure it|
|00005870| 20 66 69 74 73 20 69 6e | 20 73 69 6e 67 6c 65 2d | fits in| single-|
|00005880| 70 72 65 63 69 73 69 6f | 6e 2e 0d 09 09 09 09 0d |precisio|n.......|
|00005890| 09 09 09 09 09 38 20 70 | 75 74 3a 20 6c 65 6e 67 |.....8 p|ut: leng|
|000058a0| 74 68 0d 09 09 09 09 09 | 63 6c 65 61 72 3a 20 69 |th......|clear: i|
|000058b0| 6e 73 74 72 6e 20 20 61 | 72 69 74 68 54 79 70 65 |nstrn a|rithType|
|000058c0| 20 3e 74 79 70 65 3a 20 | 69 6e 73 74 72 6e 0d 09 | >type: |instrn..|
|000058d0| 09 09 09 09 72 65 67 3a | 20 6d 79 52 65 66 20 20 |....reg:| myRef |
|000058e0| 64 75 70 20 3e 72 42 3a | 20 69 6e 73 74 72 6e 20 |dup >rB:| instrn |
|000058f0| 20 3e 72 44 3a 20 69 6e | 73 74 72 6e 0d 09 09 09 | >rD: in|strn....|
|00005900| 09 09 36 33 20 3e 70 72 | 69 6d 6f 70 3a 20 69 6e |..63 >pr|imop: in|
|00005910| 73 74 72 6e 20 20 31 32 | 20 3e 73 65 63 6f 70 3a |strn 12| >secop:|
|00005920| 20 69 6e 73 74 72 6e 0d | 09 09 09 09 09 63 6f 6d | instrn.|.....com|
|00005930| 70 69 6c 65 3a 20 69 6e | 73 74 72 6e 0d 09 09 09 |pile: in|strn....|
|00005940| 09 09 63 6c 65 61 72 3a | 20 69 6e 73 74 72 6e 0d |..clear:| instrn.|
|00005950| 09 09 09 09 09 69 6e 64 | 65 78 65 64 3f 20 49 46 |.....ind|exed? IF|
|00005960| 20 20 36 36 33 20 28 20 | 73 74 66 73 78 20 29 20 | 663 ( |stfsx ) |
|00005970| 20 45 4c 53 45 20 20 35 | 32 20 28 20 73 74 66 73 | ELSE 5|2 ( stfs|
|00005980| 20 29 20 20 54 48 45 4e | 0d 09 09 09 09 54 48 45 | ) THEN|.....THE|
|00005990| 4e 0d 0d 09 09 5b 09 47 | 50 52 72 65 66 09 5d 3d |N....[.G|PRref.]=|
|000059a0| 3e 09 09 09 5c 20 69 6e | 74 65 67 65 72 20 73 74 |>...\ in|teger st|
|000059b0| 6f 72 65 0d 0d 09 09 09 | 09 67 65 74 3a 20 6c 65 |ore.....|.get: le|
|000059c0| 6e 0d 09 09 09 09 53 45 | 4c 45 43 54 5b 09 31 20 |n.....SE|LECT[.1 |
|000059d0| 5d 3d 3e 09 69 6e 64 65 | 78 65 64 3f 20 49 46 20 |]=>.inde|xed? IF |
|000059e0| 20 32 31 35 20 28 20 73 | 74 62 78 20 29 20 20 45 | 215 ( s|tbx ) E|
|000059f0| 4c 53 45 20 20 33 38 20 | 28 20 73 74 62 20 29 20 |LSE 38 |( stb ) |
|00005a00| 20 54 48 45 4e 0d 09 09 | 09 09 09 20 20 5b 09 32 | THEN...|... [.2|
|00005a10| 20 5d 3d 3e 09 69 6e 64 | 65 78 65 64 3f 20 49 46 | ]=>.ind|exed? IF|
|00005a20| 20 20 34 30 37 20 28 20 | 73 74 68 78 20 29 20 20 | 407 ( |sthx ) |
|00005a30| 45 4c 53 45 20 20 34 34 | 20 28 20 73 74 68 20 29 |ELSE 44| ( sth )|
|00005a40| 20 20 54 48 45 4e 0d 09 | 09 09 09 09 20 20 5b 09 | THEN..|.... [.|
|00005a50| 34 20 5d 3d 3e 09 69 6e | 64 65 78 65 64 3f 20 49 |4 ]=>.in|dexed? I|
|00005a60| 46 20 20 31 35 31 20 28 | 20 73 74 77 78 20 29 20 |F 151 (| stwx ) |
|00005a70| 20 45 4c 53 45 20 20 33 | 36 20 28 20 73 74 77 20 | ELSE 3|6 ( stw |
|00005a80| 29 20 20 54 48 45 4e 0d | 09 09 09 09 09 20 20 5b |) THEN.|..... [|
|00005a90| 09 38 20 5d 3d 3e 09 69 | 6e 64 65 78 65 64 3f 20 |.8 ]=>.i|ndexed? |
|00005aa0| 49 46 20 20 31 34 39 20 | 28 20 73 74 64 78 20 29 |IF 149 |( stdx )|
|00005ab0| 20 20 45 4c 53 45 20 20 | 36 32 20 28 20 73 74 64 | ELSE |62 ( std|
|00005ac0| 20 29 20 20 54 48 45 4e | 0d 09 09 09 09 20 20 0d | ) THEN|..... .|
|00005ad0| 09 09 09 09 09 20 20 44 | 45 46 41 55 4c 54 3d 3e |..... D|EFAULT=>|
|00005ae0| 20 2e 22 20 69 6c 6c 65 | 67 61 6c 20 6c 65 6e 20 | ." ille|gal len |
|00005af0| 69 6e 20 43 6f 6d 70 53 | 74 6f 72 65 3a 22 20 51 |in CompS|tore:" Q|
|00005b00| 55 49 54 0d 09 09 09 09 | 5d 53 45 4c 45 43 54 0d |UIT.....|]SELECT.|
|00005b10| 0d 09 09 5b 20 56 52 72 | 65 66 09 09 5d 3d 3e 09 |...[ VRr|ef..]=>.|
|00005b20| 09 09 5c 20 76 65 63 74 | 6f 72 20 73 74 6f 72 65 |..\ vect|or store|
|00005b30| 0d 0d 09 09 09 09 69 6e | 64 65 78 65 64 3f 0d 09 |......in|dexed?..|
|00005b40| 09 09 09 4e 49 46 09 09 | 5c 20 6f 6e 6c 79 20 6c |...NIF..|\ only l|
|00005b50| 65 67 61 6c 20 69 66 20 | 6c 69 74 20 76 61 6c 75 |egal if |lit valu|
|00005b60| 65 20 69 73 20 7a 65 72 | 6f 2e 20 20 49 6e 20 74 |e is zer|o. In t|
|00005b70| 68 69 73 20 63 61 73 65 | 0d 09 09 09 09 09 09 5c |his case|.......\|
|00005b80| 20 20 77 65 20 6d 75 73 | 74 20 70 75 74 20 30 20 | we mus|t put 0 |
|00005b90| 61 73 20 74 68 65 20 41 | 20 6f 70 65 72 61 6e 64 |as the A| operand|
|00005ba0| 2c 20 61 6e 64 20 74 68 | 69 73 20 6d 65 61 6e 73 |, and th|is means|
|00005bb0| 20 0d 09 09 09 09 09 09 | 5c 20 20 74 68 65 20 70 | .......|\ the p|
|00005bc0| 72 65 76 69 6f 75 73 20 | 41 20 6f 70 65 72 61 6e |revious |A operan|
|00005bd0| 64 20 62 65 63 6f 6d 65 | 73 20 74 68 65 20 42 20 |d become|s the B |
|00005be0| 6f 70 65 72 61 6e 64 2e | 0d 09 09 09 09 09 41 53 |operand.|......AS|
|00005bf0| 53 45 52 54 7b 20 6c 69 | 74 3a 20 42 5f 6f 70 6e |SERT{ li|t: B_opn|
|00005c00| 64 20 30 3d 20 7d 0d 09 | 09 09 09 09 67 70 72 3a |d 0= }..|....gpr:|
|00005c10| 20 41 5f 6f 70 6e 64 20 | 20 3e 67 70 72 3a 20 42 | A_opnd | >gpr: B|
|00005c20| 5f 6f 70 6e 64 0d 09 09 | 09 09 09 30 20 3e 67 70 |_opnd...|...0 >gp|
|00005c30| 72 3a 20 41 5f 6f 70 6e | 64 0d 09 09 09 09 54 48 |r: A_opn|d.....TH|
|00005c40| 45 4e 0d 09 09 09 09 32 | 33 31 20 28 20 73 74 76 |EN.....2|31 ( stv|
|00005c50| 78 20 29 0d 0d 09 44 45 | 46 41 55 4c 54 3d 3e 0d |x )...DE|FAULT=>.|
|00005c60| 09 5d 43 41 53 45 0d 09 | 0d 09 63 6f 6d 70 46 65 |.]CASE..|..compFe|
|00005c70| 74 63 68 4f 72 53 74 6f | 72 65 49 6e 73 74 3a 20 |tchOrSto|reInst: |
|00005c80| 73 65 6c 66 0d 3b 6d 0d | 0d 3a 6d 20 43 6f 6d 70 |self.;m.|.:m Comp|
|00005c90| 53 68 69 66 74 3a 20 7b | 20 5c 20 61 72 69 74 68 |Shift: {| \ arith|
|00005ca0| 3f 20 72 69 67 68 74 3f | 20 73 68 69 66 74 43 6e |? right?| shiftCn|
|00005cb0| 74 20 2d 2d 20 7d 0d 0d | 28 2a 09 53 68 69 66 74 |t -- }..|(*.Shift|
|00005cc0| 73 20 61 72 65 20 73 6c | 69 67 68 74 6c 79 20 74 |s are sl|ightly t|
|00005cd0| 72 69 63 6b 79 20 73 69 | 6e 63 65 20 77 65 20 68 |ricky si|nce we h|
|00005ce0| 61 76 65 20 74 6f 20 64 | 65 63 69 64 65 20 77 68 |ave to d|ecide wh|
|00005cf0| 65 74 68 65 72 20 74 6f | 20 75 73 65 0d 09 72 6f |ether to| use..ro|
|00005d00| 74 61 74 65 20 6c 65 66 | 74 20 61 6e 64 20 6d 61 |tate lef|t and ma|
|00005d10| 73 6b 2c 20 6f 72 20 61 | 20 73 74 72 61 69 67 68 |sk, or a| straigh|
|00005d20| 74 20 73 68 69 66 74 2c | 20 77 68 69 63 68 20 64 |t shift,| which d|
|00005d30| 6f 65 73 6e 27 74 20 65 | 78 69 73 74 20 69 6e 20 |oesn't e|xist in |
|00005d40| 61 6c 6c 0d 09 6d 6f 64 | 65 73 20 73 69 6e 63 65 |all..mod|es since|
|00005d50| 20 72 6f 74 20 6c 65 66 | 74 20 26 20 6d 61 73 6b | rot lef|t & mask|
|00005d60| 20 63 61 6e 20 62 65 20 | 75 73 65 64 2e 20 20 54 | can be |used. T|
|00005d70| 68 65 20 64 69 66 66 65 | 72 65 6e 74 20 70 6f 73 |he diffe|rent pos|
|00005d80| 73 69 62 69 6c 69 74 69 | 65 73 0d 09 61 72 65 20 |sibiliti|es..are |
|00005d90| 71 75 69 74 65 20 6c 6f | 67 69 63 61 6c 2c 20 62 |quite lo|gical, b|
|00005da0| 75 74 20 67 65 74 20 61 | 20 62 69 74 20 63 6f 6d |ut get a| bit com|
|00005db0| 70 6c 69 63 61 74 65 64 | 2c 20 65 73 70 65 63 69 |plicated|, especi|
|00005dc0| 61 6c 6c 79 20 73 69 6e | 63 65 20 73 6f 6d 65 20 |ally sin|ce some |
|00005dd0| 6f 66 0d 09 74 68 65 20 | 36 34 2d 62 69 74 20 69 |of..the |64-bit i|
|00005de0| 6e 73 74 72 75 63 74 69 | 6f 6e 73 20 6e 65 65 64 |nstructi|ons need|
|00005df0| 20 61 20 36 2d 62 69 74 | 20 66 69 65 6c 64 20 69 | a 6-bit| field i|
|00005e00| 6e 73 74 65 61 64 20 6f | 66 20 74 68 65 20 75 73 |nstead o|f the us|
|00005e10| 75 61 6c 20 35 2d 62 69 | 74 2e 0d 09 57 65 20 68 |ual 5-bi|t...We h|
|00005e20| 61 6e 64 6c 65 20 74 68 | 65 73 65 20 6d 61 63 68 |andle th|ese mach|
|00005e30| 69 6e 61 74 69 6f 6e 73 | 20 68 65 72 65 20 2d 20 |inations| here - |
|00005e40| 73 65 65 20 74 68 65 20 | 63 6f 6d 6d 65 6e 74 73 |see the |comments|
|00005e50| 20 69 6e 20 74 68 65 20 | 63 6f 64 65 20 64 65 61 | in the |code dea|
|00005e60| 6c 69 6e 67 0d 09 77 69 | 74 68 20 74 68 65 20 69 |ling..wi|th the i|
|00005e70| 6e 64 69 76 69 64 75 61 | 6c 20 63 61 73 65 73 2e |ndividua|l cases.|
|00005e80| 0d 09 54 68 65 20 41 20 | 6f 70 65 72 61 6e 64 20 |..The A |operand |
|00005e90| 6d 75 73 74 20 62 65 20 | 61 20 47 50 52 2c 20 61 |must be |a GPR, a|
|00005ea0| 6e 64 20 69 73 20 74 68 | 65 20 47 50 52 20 77 65 |nd is th|e GPR we|
|00005eb0| 27 72 65 20 73 68 69 66 | 74 69 6e 67 2e 0d 09 54 |'re shif|ting...T|
|00005ec0| 68 65 20 42 20 6f 70 65 | 72 61 6e 64 20 69 73 20 |he B ope|rand is |
|00005ed0| 74 68 65 20 73 68 69 66 | 74 20 61 6d 6f 75 6e 74 |the shif|t amount|
|00005ee0| 2c 20 61 6e 64 20 6d 61 | 79 20 62 65 20 61 20 47 |, and ma|y be a G|
|00005ef0| 50 52 20 6f 72 20 61 20 | 6c 69 74 65 72 61 6c 2e |PR or a |literal.|
|00005f00| 0d 2a 29 0d 0d 09 73 68 | 69 66 74 54 79 70 65 20 |.*)...sh|iftType |
|00005f10| 20 64 75 70 20 20 3e 74 | 79 70 65 3a 20 69 6e 73 | dup >t|ype: ins|
|00005f20| 74 72 6e 20 20 70 75 74 | 3a 20 69 6e 73 74 72 6e |trn put|: instrn|
|00005f30| 54 79 70 65 0d 09 67 70 | 72 3a 20 41 5f 6f 70 6e |Type..gp|r: A_opn|
|00005f40| 64 20 20 3e 72 41 3a 20 | 69 6e 73 74 72 6e 20 20 |d >rA: |instrn |
|00005f50| 72 65 67 3a 20 6d 79 52 | 65 66 20 20 3e 72 44 3a |reg: myR|ef >rD:|
|00005f60| 20 69 6e 73 74 72 6e 0d | 0d 09 67 65 74 3a 20 73 | instrn.|..get: s|
|00005f70| 75 62 74 79 70 65 20 20 | 31 20 61 6e 64 20 30 3c |ubtype |1 and 0<|
|00005f80| 3e 20 20 2d 3e 20 72 69 | 67 68 74 3f 0d 09 67 65 |> -> ri|ght?..ge|
|00005f90| 74 3a 20 73 75 62 74 79 | 70 65 20 20 32 20 61 6e |t: subty|pe 2 an|
|00005fa0| 64 20 30 3c 3e 20 20 2d | 3e 20 61 72 69 74 68 3f |d 0<> -|> arith?|
|00005fb0| 0d 0d 09 72 65 66 54 79 | 70 65 3a 20 20 42 5f 6f |...refTy|pe: B_o|
|00005fc0| 70 6e 64 20 20 6c 69 74 | 52 65 66 20 3d 0d 09 49 |pnd lit|Ref =..I|
|00005fd0| 46 09 6c 69 74 3a 20 42 | 5f 6f 70 6e 64 20 20 2d |F.lit: B|_opnd -|
|00005fe0| 3e 20 73 68 69 66 74 43 | 6e 74 09 5c 20 6c 69 74 |> shiftC|nt.\ lit|
|00005ff0| 65 72 61 6c 20 73 68 69 | 66 74 73 0d 09 09 73 68 |eral shi|fts...sh|
|00006000| 69 66 74 43 6e 74 20 3e | 73 68 69 66 74 3a 20 69 |iftCnt >|shift: i|
|00006010| 6e 73 74 72 6e 0d 09 09 | 72 69 67 68 74 3f 0d 09 |nstrn...|right?..|
|00006020| 09 49 46 09 61 72 69 74 | 68 3f 0d 09 09 09 49 46 |.IF.arit|h?....IF|
|00006030| 09 09 09 09 09 09 5c 20 | 72 69 67 68 74 20 61 72 |......\ |right ar|
|00006040| 69 74 68 20 2d 20 68 61 | 73 20 61 20 73 68 69 66 |ith - ha|s a shif|
|00006050| 74 20 61 76 61 69 6c 61 | 62 6c 65 2c 0d 09 09 09 |t availa|ble,....|
|00006060| 09 09 09 09 09 09 5c 20 | 20 73 69 6e 63 65 20 73 |......\ | since s|
|00006070| 69 67 6e 2d 65 78 74 65 | 6e 73 69 6f 6e 20 69 73 |ign-exte|nsion is|
|00006080| 20 73 70 65 63 69 61 6c | 0d 09 09 09 09 6f 74 53 | special|.....otS|
|00006090| 68 69 66 74 20 20 70 75 | 74 3a 20 6f 70 54 79 70 |hift pu|t: opTyp|
|000060a0| 65 09 09 5c 20 65 6e 73 | 75 72 65 20 69 74 20 69 |e..\ ens|ure it i|
|000060b0| 73 6e 27 74 20 73 68 69 | 66 74 26 6d 61 73 6b 0d |sn't shi|ft&mask.|
|000060c0| 09 09 09 09 33 31 20 3e | 70 72 69 6d 4f 70 3a 20 |....31 >|primOp: |
|000060d0| 69 6e 73 74 72 6e 0d 09 | 09 09 09 36 34 62 69 74 |instrn..|...64bit|
|000060e0| 3f 0d 09 09 09 09 49 46 | 09 09 6b 6c 75 64 67 65 |?.....IF|..kludge|
|000060f0| 53 68 69 66 74 43 6e 74 | 3a 20 69 6e 73 74 72 6e |ShiftCnt|: instrn|
|00006100| 20 20 38 32 36 0d 09 09 | 09 09 45 4c 53 45 09 38 | 826...|..ELSE.8|
|00006110| 32 34 0d 09 09 09 09 54 | 48 45 4e 0d 09 09 09 09 |24.....T|HEN.....|
|00006120| 3e 73 65 63 4f 70 3a 20 | 69 6e 73 74 72 6e 0d 09 |>secOp: |instrn..|
|00006130| 09 09 09 6c 69 74 3a 20 | 42 5f 6f 70 6e 64 20 3e |...lit: |B_opnd >|
|00006140| 73 68 69 66 74 3a 20 69 | 6e 73 74 72 6e 0d 0d 09 |shift: i|nstrn...|
|00006150| 09 09 45 4c 53 45 09 09 | 09 09 09 5c 20 72 69 67 |..ELSE..|...\ rig|
|00006160| 68 74 20 6c 6f 67 69 63 | 61 6c 20 2d 20 6d 75 73 |ht logic|al - mus|
|00006170| 74 20 75 73 65 20 72 6f | 74 20 6c 65 66 74 20 26 |t use ro|t left &|
|00006180| 20 6d 61 73 6b 0d 09 09 | 09 09 36 34 62 69 74 3f | mask...|..64bit?|
|00006190| 0d 09 09 09 09 49 46 09 | 6b 6c 75 64 67 65 53 68 |.....IF.|kludgeSh|
|000061a0| 69 66 74 43 6e 74 3a 20 | 69 6e 73 74 72 6e 0d 09 |iftCnt: |instrn..|
|000061b0| 09 09 09 09 36 34 20 73 | 68 69 66 74 43 6e 74 20 |....64 s|hiftCnt |
|000061c0| 2d 20 20 3e 73 68 69 66 | 74 3a 20 69 6e 73 74 72 |- >shif|t: instr|
|000061d0| 6e 0d 09 09 09 09 09 33 | 30 20 3e 70 72 69 6d 4f |n......3|0 >primO|
|000061e0| 70 3a 20 69 6e 73 74 72 | 6e 20 20 30 20 3e 73 65 |p: instr|n 0 >se|
|000061f0| 63 4f 70 3a 20 69 6e 73 | 74 72 6e 09 5c 20 72 6c |cOp: ins|trn.\ rl|
|00006200| 64 69 63 6c 0d 0d 09 09 | 09 09 09 67 65 74 3a 20 |dicl....|...get: |
|00006210| 6f 70 54 79 70 65 20 6f | 74 53 68 69 66 74 20 3d |opType o|tShift =|
|00006220| 0d 09 09 09 09 09 49 46 | 09 73 68 69 66 74 43 6e |......IF|.shiftCn|
|00006230| 74 20 20 70 75 74 3a 20 | 6d 61 73 6b 45 6e 64 0d |t put: |maskEnd.|
|00006240| 09 09 09 09 09 09 6f 74 | 53 68 69 66 74 26 6d 61 |......ot|Shift&ma|
|00006250| 73 6b 20 20 70 75 74 3a | 20 6f 70 54 79 70 65 0d |sk put:| opType.|
|00006260| 09 09 09 09 09 54 48 45 | 4e 0d 09 09 09 09 09 67 |.....THE|N......g|
|00006270| 65 74 3a 20 6d 61 73 6b | 45 6e 64 20 20 70 75 74 |et: mask|End put|
|00006280| 3a 20 69 76 61 72 3e 20 | 6d 61 73 6b 45 6e 64 20 |: ivar> |maskEnd |
|00006290| 69 6e 20 69 6e 73 74 72 | 6e 0d 09 09 09 09 45 4c |in instr|n.....EL|
|000062a0| 53 45 0d 09 09 09 09 09 | 33 32 20 73 68 69 66 74 |SE......|32 shift|
|000062b0| 43 6e 74 20 2d 20 20 3e | 73 68 69 66 74 3a 20 69 |Cnt - >|shift: i|
|000062c0| 6e 73 74 72 6e 0d 09 09 | 09 09 09 32 31 20 3e 70 |nstrn...|...21 >p|
|000062d0| 72 69 6d 4f 70 3a 20 69 | 6e 73 74 72 6e 0d 09 09 |rimOp: i|nstrn...|
|000062e0| 09 09 09 0d 09 09 09 09 | 09 67 65 74 3a 20 6f 70 |........|.get: op|
|000062f0| 54 79 70 65 20 6f 74 53 | 68 69 66 74 20 3d 0d 09 |Type otS|hift =..|
|00006300| 09 09 09 09 49 46 09 73 | 68 69 66 74 43 6e 74 09 |....IF.s|hiftCnt.|
|00006310| 70 75 74 3a 20 6d 61 73 | 6b 42 65 67 69 6e 0d 09 |put: mas|kBegin..|
|00006320| 09 09 09 09 09 33 31 09 | 09 09 70 75 74 3a 20 6d |.....31.|..put: m|
|00006330| 61 73 6b 45 6e 64 0d 09 | 09 09 09 09 09 6f 74 53 |askEnd..|.....otS|
|00006340| 68 69 66 74 26 6d 61 73 | 6b 20 20 70 75 74 3a 20 |hift&mas|k put: |
|00006350| 6f 70 54 79 70 65 0d 09 | 09 09 09 09 54 48 45 4e |opType..|....THEN|
|00006360| 0d 09 09 09 09 09 67 65 | 74 3a 20 6d 61 73 6b 42 |......ge|t: maskB|
|00006370| 65 67 69 6e 20 20 70 75 | 74 3a 20 69 76 61 72 3e |egin pu|t: ivar>|
|00006380| 20 6d 61 73 6b 42 65 67 | 69 6e 09 69 6e 20 69 6e | maskBeg|in.in in|
|00006390| 73 74 72 6e 0d 09 09 09 | 09 09 67 65 74 3a 20 6d |strn....|..get: m|
|000063a0| 61 73 6b 45 6e 64 20 20 | 20 20 70 75 74 3a 20 69 |askEnd | put: i|
|000063b0| 76 61 72 3e 20 6d 61 73 | 6b 45 6e 64 09 09 69 6e |var> mas|kEnd..in|
|000063c0| 20 69 6e 73 74 72 6e 0d | 09 09 09 09 54 48 45 4e | instrn.|....THEN|
|000063d0| 0d 09 09 09 54 48 45 4e | 0d 09 09 45 4c 53 45 09 |....THEN|...ELSE.|
|000063e0| 09 09 09 09 09 5c 20 6c | 65 66 74 20 2d 20 6d 75 |.....\ l|eft - mu|
|000063f0| 73 74 20 75 73 65 20 72 | 6f 74 20 6c 65 66 74 20 |st use r|ot left |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.